22
33namespace App \Http \Controllers \Admin ;
44
5+ use Exception ;
56use App \Models \Category ;
7+ use Illuminate \Support \Str ;
68use Illuminate \Http \Request ;
9+ use Illuminate \Support \Facades \DB ;
710use App \Http \Controllers \Controller ;
811use App \Http \Requests \CategoryRequest ;
12+ use Illuminate \Support \Facades \Storage ;
913use App \Http \Resources \CategoryResource ;
1014
1115class CategoryController extends Controller
@@ -28,6 +32,66 @@ public function getCategory($id){
2832 $ category = Category::findOrFail ($ id );
2933 return response ()->json (['category ' =>CategoryResource::make ($ category )],200 );
3034 }
35+ public function update (Request $ request , $ id )
36+ {
37+ $ request ->validate ([
38+ 'category_name ' => 'required|string|max:255 ' ,
39+ 'gender_id ' => 'required|integer|exists:genders,id ' ,
40+ 'parent_id ' => 'nullable|integer|exists:categories,id ' ,
41+ 'category_profile ' => 'nullable|image|mimes:jpeg,png,jpg,gif|max:2048 '
42+ ]);
43+
44+ try {
45+ DB ::beginTransaction ();
46+
47+ $ category = Category::findOrFail ($ id );
48+
49+ // Mettre à jour les données de base
50+ $ category ->category_name = $ request ->category_name ;
51+ $ category ->parent_id = $ request ->parent_id ;
52+
53+ // Gérer l'image de profil
54+ if ($ request ->hasFile ('category_profile ' )) {
55+ // Supprimer l'ancienne image si elle existe
56+ if ($ category ->category_profile ) {
57+ Storage::disk ('public ' )->delete ($ category ->category_profile );
58+ }
59+
60+ // Stocker la nouvelle image
61+ $ image = $ request ->file ('category_profile ' );
62+ $ imageName = time () . '_ ' . Str::slug ($ request ->category_name ) . '. ' . $ image ->getClientOriginalExtension ();
63+ $ imagePath = $ image ->store ('categories/profile ' , $ imageName , 'public ' );
64+ $ category ->category_profile = $ imagePath ;
65+ }
66+
67+ // Générer l'URL de la catégorie si elle n'existe pas
68+ if (!$ category ->category_url ) {
69+ $ category ->category_url = Str::slug ($ request ->category_name );
70+ }
71+
72+ $ category ->save ();
73+
74+ // Mettre à jour la relation avec le genre
75+ $ category ->genders ()->sync ([$ request ->gender_id ]);
76+
77+ DB ::commit ();
78+
79+ return response ()->json ([
80+ 'success ' => true ,
81+ 'message ' => 'Catégorie mise à jour avec succès ' ,
82+ 'data ' => $ category ->load ('genders ' , 'parent ' )
83+ ], 200 );
84+
85+ } catch (Exception $ e ) {
86+ DB ::rollBack ();
87+
88+ return response ()->json ([
89+ 'success ' => false ,
90+ 'message ' => 'Erreur lors de la mise à jour de la catégorie ' ,
91+ 'error ' => $ e ->getMessage ()
92+ ], 500 );
93+ }
94+ }
3195
3296 /**
3397 * Store a newly created resource in storage.
@@ -81,10 +145,7 @@ public function show(string $id)
81145 /**
82146 * Update the specified resource in storage.
83147 */
84- public function update (Request $ request , string $ id )
85- {
86- //
87- }
148+
88149
89150 /**
90151 * Remove the specified resource from storage.
0 commit comments