From 7555e6ea8c6a5e4733e2ed9e9f5fef5b06204ef1 Mon Sep 17 00:00:00 2001 From: jeremy bayse Date: Mon, 9 Feb 2026 13:19:56 +0100 Subject: [PATCH] feat: implement admin CRUD and toggle functionality for municipalities. --- .../Admin/MunicipalityController.php | 48 ++++++++++++++++++- .../admin/municipalities/create.blade.php | 41 ++++++++++++++++ .../views/admin/municipalities/edit.blade.php | 42 ++++++++++++++++ .../admin/municipalities/index.blade.php | 27 ++++++++--- routes/web.php | 2 +- 5 files changed, 151 insertions(+), 9 deletions(-) create mode 100644 resources/views/admin/municipalities/create.blade.php create mode 100644 resources/views/admin/municipalities/edit.blade.php diff --git a/app/Http/Controllers/Admin/MunicipalityController.php b/app/Http/Controllers/Admin/MunicipalityController.php index adfd3d9..1d55279 100644 --- a/app/Http/Controllers/Admin/MunicipalityController.php +++ b/app/Http/Controllers/Admin/MunicipalityController.php @@ -11,10 +11,56 @@ class MunicipalityController extends Controller { public function index() { - $municipalities = Municipality::all(); + $municipalities = Municipality::orderBy('name')->get(); return view('admin.municipalities.index', compact('municipalities')); } + public function create() + { + return view('admin.municipalities.create'); + } + + public function store(Request $request) + { + $request->merge(['is_active' => $request->has('is_active')]); + + $validated = $request->validate([ + 'name' => 'required|string|max:255|unique:municipalities', + 'zip_code' => 'required|string|max:10', + 'is_active' => 'boolean' + ]); + + Municipality::create($validated); + + return redirect()->route('admin.municipalities.index')->with('success', 'Commune créée avec succès.'); + } + + public function edit(Municipality $municipality) + { + return view('admin.municipalities.edit', compact('municipality')); + } + + public function update(Request $request, Municipality $municipality) + { + $request->merge(['is_active' => $request->has('is_active')]); + + $validated = $request->validate([ + 'name' => 'required|string|max:255|unique:municipalities,name,' . $municipality->id, + 'zip_code' => 'required|string|max:10', + 'is_active' => 'boolean' + ]); + + $municipality->update($validated); + + return redirect()->route('admin.municipalities.index')->with('success', 'Commune mise à jour avec succès.'); + } + + public function destroy(Municipality $municipality) + { + $municipality->delete(); + return redirect()->route('admin.municipalities.index')->with('success', 'Commune supprimée avec succès.'); + } + public function toggle(Municipality $municipality) { $municipality->update(['is_active' => !$municipality->is_active]); diff --git a/resources/views/admin/municipalities/create.blade.php b/resources/views/admin/municipalities/create.blade.php new file mode 100644 index 0000000..109e3f6 --- /dev/null +++ b/resources/views/admin/municipalities/create.blade.php @@ -0,0 +1,41 @@ +@extends('layouts.app') + +@section('content') +
+
+

Ajouter une Commune

+ Retour +
+ +
+
+
+ @csrf + +
+ + + @error('name') +
{{ $message }}
+ @enderror +
+ +
+ + + @error('zip_code') +
{{ $message }}
+ @enderror +
+ +
+ + +
+ + +
+
+
+
+@endsection diff --git a/resources/views/admin/municipalities/edit.blade.php b/resources/views/admin/municipalities/edit.blade.php new file mode 100644 index 0000000..88d81bd --- /dev/null +++ b/resources/views/admin/municipalities/edit.blade.php @@ -0,0 +1,42 @@ +@extends('layouts.app') + +@section('content') +
+
+

Modifier la Commune: {{ $municipality->name }}

+ Retour +
+ +
+
+
+ @csrf + @method('PUT') + +
+ + + @error('name') +
{{ $message }}
+ @enderror +
+ +
+ + + @error('zip_code') +
{{ $message }}
+ @enderror +
+ +
+ is_active) ? 'checked' : '' }}> + +
+ + +
+
+
+
+@endsection diff --git a/resources/views/admin/municipalities/index.blade.php b/resources/views/admin/municipalities/index.blade.php index 5288b86..4f3639e 100644 --- a/resources/views/admin/municipalities/index.blade.php +++ b/resources/views/admin/municipalities/index.blade.php @@ -2,7 +2,10 @@ @section('content')
-

Gestion des Communes

+
+

Gestion des Communes

+ Ajouter une Commune +
@@ -29,12 +32,22 @@ @endif -
- @csrf - -
+
+ Modifier + +
+ @csrf + +
+ +
+ @csrf + @method('DELETE') + +
+
@endforeach diff --git a/routes/web.php b/routes/web.php index 58aec81..2472148 100644 --- a/routes/web.php +++ b/routes/web.php @@ -57,8 +57,8 @@ Route::middleware(['auth', 'active', 'admin'])->prefix('admin')->name('admin.')- })->name('users.index'); // Admin Municipalities - Route::get('/municipalities', [\App\Http\Controllers\Admin\MunicipalityController::class, 'index'])->name('municipalities.index'); Route::post('/municipalities/{municipality}/toggle', [\App\Http\Controllers\Admin\MunicipalityController::class, 'toggle'])->name('municipalities.toggle'); + Route::resource('municipalities', \App\Http\Controllers\Admin\MunicipalityController::class); // Admin License Levels Route::get('/license-levels', [\App\Http\Controllers\Admin\LicenseLevelController::class, 'index'])->name('license_levels.index');