user(); return view('quiz.banque', [ 'quizzes' => Quiz::where('partage', true) ->with(['classe.etablissement']) ->withCount('questions') ->latest() ->get(), 'mesClasses' => $prof->classes()->whereNull('archivee_a')->orderBy('nom')->get(), ]); } public function partager(Classe $classe, Quiz $quiz): RedirectResponse { $this->verifierProprietaire($classe); abort_if($quiz->classe_id !== $classe->id, 404); $quiz->update(['partage' => ! $quiz->partage]); return redirect()->route('mes-classes.quiz.show', [$classe, $quiz]); } public function dupliquer(Request $request, Quiz $quiz): RedirectResponse { abort_unless($quiz->partage, 404); $prof = Auth::guard('web')->user(); $donnees = $request->validate(['classe_id' => ['required', 'integer']]); $classe = $prof->classes()->whereNull('archivee_a')->findOrFail($donnees['classe_id']); $copie = $quiz->dupliquerDans($classe); return redirect()->route('mes-classes.quiz.show', [$classe, $copie])->with('quiz_duplique', true); } private function verifierProprietaire(Classe $classe): void { abort_if($classe->user_id !== Auth::guard('web')->id(), 403); } }