diff --git a/.env.example b/.env.example deleted file mode 100644 index 33237d6..0000000 --- a/.env.example +++ /dev/null @@ -1,59 +0,0 @@ -APP_NAME=Laravel -APP_ENV=local -APP_KEY= -APP_DEBUG=true -APP_URL=http://localhost - -LOG_CHANNEL=stack -LOG_DEPRECATIONS_CHANNEL=null -LOG_LEVEL=debug - -DB_CONNECTION=mysql -DB_HOST=127.0.0.1 -DB_PORT=3306 -DB_DATABASE=ecommerce -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailpit -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS="hello@example.com" -MAIL_FROM_NAME="${APP_NAME}" - -AWS_ACCESS_KEY_ID= -AWS_SECRET_ACCESS_KEY= -AWS_DEFAULT_REGION=us-east-1 -AWS_BUCKET= -AWS_USE_PATH_STYLE_ENDPOINT=false - -PUSHER_APP_ID= -PUSHER_APP_KEY= -PUSHER_APP_SECRET= -PUSHER_HOST= -PUSHER_PORT=443 -PUSHER_SCHEME=https -PUSHER_APP_CLUSTER=mt1 - -VITE_APP_NAME="${APP_NAME}" -VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -VITE_PUSHER_HOST="${PUSHER_HOST}" -VITE_PUSHER_PORT="${PUSHER_PORT}" -VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" -VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/app/Http/Controllers/CategorieController.php b/app/Http/Controllers/CategorieController.php index 1550db0..0412ed0 100644 --- a/app/Http/Controllers/CategorieController.php +++ b/app/Http/Controllers/CategorieController.php @@ -1,7 +1,7 @@ get(); + + // Calculer le nombre total de produits + $totalProduits = Produit::count(); + + // Retourner la vue avec les catégories et le nombre total de produits + return view('admin.categories.list_categorie', compact('categories', 'totalProduits')); } /** * Show the form for creating a new resource. */ - public function create() - { - // + public function create(){ + return view('admin.categories.ajout_categorie'); } /** * Store a newly created resource in storage. */ - public function store(Request $request) - { - // + public function store(Request $request){ + // Valider les données + $validatedData = $request->validate([ + 'libelle' => 'required|string|max:255', + 'description' => 'required|string|max:500', + ]); + + // Vérifier si le libellé existe déjà (insensible à la casse) + $existingCategorie = categorie::whereRaw('LOWER(libelle) = ?', [strtolower($request->libelle)])->first(); + + if ($existingCategorie) { + // Si une catégorie existe avec ce libellé, renvoyer un message d'erreur + return redirect()->back()->with('error', 'La catégorie existe déjà.'); + } + + // Créer la nouvelle catégorie + categorie::create([ + 'libelle' => $request->libelle, + 'description' => $request->description, + ]); + + // Rediriger avec un message de succès + return redirect()->route('categories.index')->with('success', 'Catégorie créée !'); } + /** * Display the specified resource. @@ -50,16 +76,52 @@ public function edit(Categorie $categorie) /** * Update the specified resource in storage. */ - public function update(Request $request, Categorie $categorie) + public function update(Request $request, $id) { - // + // Validation des données envoyées + $request->validate([ + 'libelle' => 'required|string|max:255', + 'description' => 'required|string|max:1000', + ]); + + // Vérifier si le nouveau libellé existe déjà pour une autre catégorie + $existingCategorie = Categorie::whereRaw('LOWER(libelle) = ?', [strtolower($request->libelle)]) + ->where('id', '!=', $id) // Exclure la catégorie actuelle + ->first(); + + if ($existingCategorie) { + // Si une catégorie existe déjà avec ce libellé, renvoyer un message d'erreur + return redirect()->back()->with('error', 'Une autre catégorie avec ce libellé existe déjà.'); + } + + // Trouver la catégorie par son ID + $categorie = Categorie::findOrFail($id); + + // Mettre à jour les informations de la catégorie + $categorie->libelle = $request->input('libelle'); + $categorie->description = $request->input('description'); + + // Enregistrer les modifications dans la base de données + $categorie->save(); + + // Retourner à la page précédente avec un message de succès + return redirect()->route('categories.index')->with('success', 'La catégorie a été mise à jour avec succès.'); } - + /** * Remove the specified resource from storage. */ - public function destroy(Categorie $categorie) + public function destroy($id) { - // + // Trouver la catégorie par son ID + $categorie = Categorie::findOrFail($id); + + // Supprimer la catégorie + $categorie->delete(); + + // Rediriger avec un message de succès + return redirect()->route('categories.index')->with('success', 'Catégorie supprimé '); } } + + diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php new file mode 100644 index 0000000..d2bace9 --- /dev/null +++ b/app/Http/Controllers/UserController.php @@ -0,0 +1,22 @@ +delete(); + + return redirect()->back()->with('success', 'Utilisateur supprimé avec succès.'); + } +} diff --git a/app/Models/Categorie.php b/app/Models/Categorie.php index a4cf9b7..46326b7 100644 --- a/app/Models/Categorie.php +++ b/app/Models/Categorie.php @@ -13,8 +13,9 @@ class Categorie extends Model 'description' ]; - public function produit() + public function produits() { - return $this->hasMany(Produit::class); - } + return $this->hasMany(Produit::class, 'id_categorie'); // Assurez-vous d'utiliser le bon modèle ici + +} } diff --git a/resources/views/admin/categories/ajout_categorie.blade.php b/resources/views/admin/categories/ajout_categorie.blade.php new file mode 100644 index 0000000..5183d2c --- /dev/null +++ b/resources/views/admin/categories/ajout_categorie.blade.php @@ -0,0 +1,6 @@ +@extends('admin.dashboard') + +@section('content') +

for

+ +@endsection diff --git a/resources/views/admin/categories/list_categorie.blade.php b/resources/views/admin/categories/list_categorie.blade.php new file mode 100644 index 0000000..81734ff --- /dev/null +++ b/resources/views/admin/categories/list_categorie.blade.php @@ -0,0 +1,199 @@ +@extends('admin.dashboard') + +@section('content') +
+
+
+
+

Liste des catégories

+ + + @if(session('success')) +
+ {{ session('success') }} +
+ @endif + + + @if(session('error')) +
+ {{ session('error') }} +
+ @endif + + + + +
+ +
+ + +
+ + + + + + + + + + + + @foreach($categories as $categorie) + + + + + + + + + + + + + + @endforeach + +
#LibelléDescriptionProportion des produits par catégoriesActions
{{ $loop->index + 1 }}{{ $categorie->libelle }}{{ $categorie->description }} + @php + $produitsCount = $categorie->produits->count(); + $progress = $totalProduits > 0 ? ($produitsCount / $totalProduits) * 100 : 0; + @endphp +
+
+
+
+
+ + + + + +
+
+ +
+
+
+
+ + + + +@endsection diff --git a/resources/views/admin/dashboard.blade.php b/resources/views/admin/dashboard.blade.php index 624806b..7343097 100644 --- a/resources/views/admin/dashboard.blade.php +++ b/resources/views/admin/dashboard.blade.php @@ -1,17 +1,11 @@ -

- {{ __('Tableau de bord Administrateur') }} -

+
-
+
-
-
- {{ __("Bienvenue dans l'espace administrateur") }} -
-
+
diff --git a/resources/views/admin/partials/sidebar.blade.php b/resources/views/admin/partials/sidebar.blade.php new file mode 100644 index 0000000..c63aa20 --- /dev/null +++ b/resources/views/admin/partials/sidebar.blade.php @@ -0,0 +1,102 @@ + \ No newline at end of file diff --git a/resources/views/admin/users/index.blade.php b/resources/views/admin/users/index.blade.php new file mode 100644 index 0000000..565ed31 --- /dev/null +++ b/resources/views/admin/users/index.blade.php @@ -0,0 +1,119 @@ +@extends('admin.dashboard') + +@section('content') +
+
+
+
+

Liste des utilisateurs

+ + + @if(session('success')) +
+ {{ session('success') }} +
+ @endif + + + @if(session('error')) +
+ {{ session('error') }} +
+ @endif + + + + + + + +
+ + + + + + + + + + + + + + @foreach($users as $user) + + + + + + + + + + + + + @endforeach + + +
#UserNameEmailAddressPhoneAction
{{ $loop->index + 1 }}{{ $user->name }}{{ $user->email }}{{ $user->address }}{{ $user->phone }} + + +
+
+ +
+
+
+
+ + + + +@endsection diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index b59af15..6f20473 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -8,14 +8,22 @@ {{ config('app.name', 'Laravel') }} + + + + + + + + @vite(['resources/css/app.css', 'resources/js/app.js']) - -
+ +
@include('layouts.navigation') @@ -30,7 +38,41 @@
{{ $slot }} +
+ + @include("admin.partials.sidebar") + @yield('content') +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/views/layouts/navigation.blade.php b/resources/views/layouts/navigation.blade.php index c2d3a65..cd9e749 100644 --- a/resources/views/layouts/navigation.blade.php +++ b/resources/views/layouts/navigation.blade.php @@ -5,14 +5,14 @@
diff --git a/routes/web.php b/routes/web.php index 24b1773..3b193d7 100644 --- a/routes/web.php +++ b/routes/web.php @@ -4,6 +4,8 @@ use App\Http\Controllers\ProfileController; use App\Http\Controllers\AdminController; use App\Http\Controllers\ClientController; +use App\Http\Controllers\CategorieController; +use App\Http\Controllers\UserController; use Illuminate\Support\Facades\Route; /* @@ -39,6 +41,12 @@ Route::middleware(['auth', 'admin'])->group(function () { Route::get('/admin/dashboard', [AdminController::class, 'dashboard']) ->name('admin.dashboard'); + + + + Route::resource('categories', CategorieController::class); + + Route::resource('users', UserController::class); }); // Routes pour les clients