authorize('viewAny', Vacancy::class); return view('dashboard.administration.positions') ->with([ 'forms' => Form::all(), 'vacancies' => Vacancy::all() ]); } public function store(VacancyRequest $request) { $this->authorize('create', Vacancy::class); $form = Form::find($request->vacancyFormID); if (!is_null($form)) { /* note: since we can't convert HTML back to Markdown, we'll have to do the converting when the user requests a page, * and leave the database with Markdown only so it can be used and edited everywhere. * for several vacancies, this would require looping through all of them and replacing MD with HTML, which is obviously not the most clean solution; * however, the Model can be configured to return MD instead of HTML on that specific field saving us from looping. */ Vacancy::create([ 'vacancyName' => $request->vacancyName, 'vacancyDescription' => $request->vacancyDescription, 'vacancyFullDescription' => $request->vacancyFullDescription, 'vacancySlug' => Str::slug($request->vacancyName), 'permissionGroupName' => $request->permissionGroup, 'discordRoleID' => $request->discordRole, 'vacancyFormID' => $request->vacancyFormID, 'vacancyCount' => $request->vacancyCount ]); $request->session()->flash('success', 'Vacancy successfully opened. It will now show in the home page.'); } else { $request->session()->flash('error', 'You cannot create a vacancy without a valid form.'); } return redirect()->back(); } public function updatePositionAvailability(Request $request, $status, Vacancy $vacancy) { $this->authorize('update', $vacancy); if (!is_null($vacancy)) { $type = 'success'; switch ($status) { case 'open': $vacancy->open(); $message = "Position successfully opened!"; break; case 'close': $vacancy->close(); $message = "Position successfully closed!"; foreach(User::all() as $user) { if ($user->isStaffMember()) { $user->notify(new VacancyClosed($vacancy)); } } break; default: $message = "Please do not tamper with the button's URLs. To report a bug, please contact an administrator."; $type = 'error'; } } else { $message = "The position you're trying to update doesn't exist!"; $type = "error"; } $request->session()->flash($type, $message); return redirect()->back(); } public function edit(Request $request, Vacancy $position) { $this->authorize('update', $position); return view('dashboard.administration.editposition') ->with('vacancy', $position); } public function update(VacancyEditRequest $request, Vacancy $vacancy) { $this->authorize('update', $vacancy); $position->vacancyFullDescription = $request->vacancyFullDescription; $position->vacancyDescription = $request->vacancyDescription; $position->vacancyCount = $request->vacancyCount; $position->save(); $request->session()->flash('success', 'Vacancy successfully updated.'); return redirect()->back(); } }