orderBy('nom')->paginate(25); return view('admin.sections.index', compact('sections')); } public function create(): View { $lieux = Lieu::orderBy('nom_long')->get(['id', 'nom_long', 'nom']); return view('admin.sections.create', compact('lieux')); } public function store(StoreSectionRequest $request): RedirectResponse { $section = Section::create($request->validated()); return redirect()->route('admin.sections.show', $section) ->with('success', 'Section créée.'); } public function show(Section $section): View { $section->load('lieu', 'membres'); $users = User::orderBy('name')->get(['id', 'name', 'email']); return view('admin.sections.show', compact('section', 'users')); } public function edit(Section $section): View { $lieux = Lieu::orderBy('nom_long')->get(['id', 'nom_long', 'nom']); return view('admin.sections.edit', compact('section', 'lieux')); } public function update(UpdateSectionRequest $request, Section $section): RedirectResponse { $section->update($request->validated()); return redirect()->route('admin.sections.show', $section) ->with('success', 'Section mise à jour.'); } public function destroy(Section $section): RedirectResponse { $section->delete(); return redirect()->route('admin.sections.index') ->with('success', 'Section supprimée.'); } public function addMembre(Request $request, Section $section): RedirectResponse { $data = $request->validate([ 'user_id' => ['required', 'exists:users,id'], 'role_in_section' => ['required', 'in:member,section_manager'], ]); $section->membres()->syncWithoutDetaching([ $data['user_id'] => ['role_in_section' => $data['role_in_section']], ]); return back()->with('success', 'Membre ajouté.'); } public function removeMembre(Section $section, User $user): RedirectResponse { $section->membres()->detach($user->id); return back()->with('success', 'Membre retiré.'); } }