feat: link quizzes to job positions and filter candidate dashboard accordingly

This commit is contained in:
jeremy bayse
2026-04-14 18:30:13 +02:00
parent 8c577cfaa7
commit ec1fe91b35
6 changed files with 92 additions and 6 deletions

View File

@@ -13,8 +13,9 @@ class JobPositionController extends Controller
$this->authorizeAdmin();
return Inertia::render('Admin/JobPositions/Index', [
'jobPositions' => JobPosition::with('tenant')->get(),
'tenants' => \App\Models\Tenant::orderBy('name')->get()
'jobPositions' => JobPosition::with(['tenant', 'quizzes'])->get(),
'tenants' => \App\Models\Tenant::orderBy('name')->get(),
'quizzes' => \App\Models\Quiz::all()
]);
}
@@ -28,9 +29,11 @@ class JobPositionController extends Controller
'requirements' => 'nullable|array',
'ai_prompt' => 'nullable|string',
'tenant_id' => 'nullable|exists:tenants,id',
'quiz_ids' => 'nullable|array',
'quiz_ids.*' => 'exists:quizzes,id',
]);
JobPosition::create([
$jobPosition = JobPosition::create([
'title' => $request->title,
'description' => $request->description,
'requirements' => $request->requirements,
@@ -38,6 +41,10 @@ class JobPositionController extends Controller
'tenant_id' => auth()->user()->isSuperAdmin() ? $request->tenant_id : auth()->user()->tenant_id,
]);
if ($request->has('quiz_ids')) {
$jobPosition->quizzes()->sync($request->quiz_ids);
}
return back()->with('success', 'Fiche de poste créée avec succès.');
}
@@ -51,6 +58,8 @@ class JobPositionController extends Controller
'requirements' => 'nullable|array',
'ai_prompt' => 'nullable|string',
'tenant_id' => 'nullable|exists:tenants,id',
'quiz_ids' => 'nullable|array',
'quiz_ids.*' => 'exists:quizzes,id',
]);
$jobPosition->update([
@@ -61,6 +70,10 @@ class JobPositionController extends Controller
'tenant_id' => auth()->user()->isSuperAdmin() ? $request->tenant_id : auth()->user()->tenant_id,
]);
if ($request->has('quiz_ids')) {
$jobPosition->quizzes()->sync($request->quiz_ids);
}
return back()->with('success', 'Fiche de poste mise à jour.');
}