authorizeAdmin(); return Inertia::render('Admin/JobPositions/Index', [ 'jobPositions' => JobPosition::with(['tenant', 'quizzes'])->get(), 'tenants' => \App\Models\Tenant::orderBy('name')->get(), 'quizzes' => \App\Models\Quiz::all() ]); } public function store(Request $request) { $this->authorizeAdmin(); $request->validate([ 'title' => 'required|string|max:255', 'description' => 'required|string', 'requirements' => 'nullable|array', 'ai_prompt' => 'nullable|string', 'ai_bypass_base_prompt' => 'boolean', 'tenant_id' => 'nullable|exists:tenants,id', 'quiz_ids' => 'nullable|array', 'quiz_ids.*' => 'exists:quizzes,id', ]); $jobPosition = JobPosition::create([ 'title' => $request->title, 'description' => $request->description, 'requirements' => $request->requirements, 'ai_prompt' => $request->ai_prompt, 'ai_bypass_base_prompt' => $request->boolean('ai_bypass_base_prompt'), 'tenant_id' => auth()->user()->isSuperAdmin() ? $request->tenant_id : auth()->user()->tenant_id, ]); $jobPosition->quizzes()->sync($request->input('quiz_ids', [])); return back()->with('success', 'Fiche de poste créée avec succès.'); } public function update(Request $request, JobPosition $jobPosition) { $this->authorizeAdmin(); $request->validate([ 'title' => 'required|string|max:255', 'description' => 'required|string', 'requirements' => 'nullable|array', 'ai_prompt' => 'nullable|string', 'ai_bypass_base_prompt' => 'boolean', 'tenant_id' => 'nullable|exists:tenants,id', 'quiz_ids' => 'nullable|array', 'quiz_ids.*' => 'exists:quizzes,id', ]); $jobPosition->update([ 'title' => $request->title, 'description' => $request->description, 'requirements' => $request->requirements, 'ai_prompt' => $request->ai_prompt, 'ai_bypass_base_prompt' => $request->boolean('ai_bypass_base_prompt'), 'tenant_id' => auth()->user()->isSuperAdmin() ? $request->tenant_id : auth()->user()->tenant_id, ]); $jobPosition->quizzes()->sync($request->input('quiz_ids', [])); return back()->with('success', 'Fiche de poste mise à jour.'); } public function destroy(JobPosition $jobPosition) { $this->authorizeAdmin(); $jobPosition->delete(); return back()->with('success', 'Fiche de poste supprimée.'); } private function authorizeAdmin() { if (!auth()->user()->isAdmin()) { abort(403); } } }