where('position_kind', 'rank') ->whereNotNull('permission_id') ->with('permission') ->whereHas('permission') ->latest() ->get(); return view('community.staff-applications', ['positions' => $positions]); } public function show(WebsiteOpenPosition $position): View { abort_unless($position->position_kind === 'rank', 404); $position->loadMissing('permission'); abort_unless($position->permission, 404); return view('community.staff-apply', ['position' => $position]); } public function store(Request $request, WebsiteOpenPosition $position): RedirectResponse { abort_unless($position->position_kind === 'rank', 404); $validated = $request->validate([ 'content' => ['required', 'string', 'min:10'], ]); $user = $request->user(); if ($user->hasAppliedForPosition($position->permission_id)) { return back()->withErrors([ 'content' => __('You have already applied for this position.'), ])->withInput(); } WebsiteStaffApplications::create([ 'user_id' => $user->id, 'rank_id' => $position->permission_id, 'content' => $validated['content'], ]); return redirect() ->route('staff-applications.index') ->with('status', __('Your application has been submitted!')); } }