Skip to content

Commit 561707f

Browse files
committed
Add update method in CategoryController and update API routes
This commit introduces the update method in the CategoryController, allowing for the modification of existing categories, including updating the category name, gender association, and profile image. It also adds a new API route for this update functionality, enhancing the management of categories within the application.
1 parent c1a8ad6 commit 561707f

File tree

2 files changed

+66
-4
lines changed

2 files changed

+66
-4
lines changed

app/Http/Controllers/Admin/CategoryController.php

Lines changed: 65 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,14 @@
22

33
namespace App\Http\Controllers\Admin;
44

5+
use Exception;
56
use App\Models\Category;
7+
use Illuminate\Support\Str;
68
use Illuminate\Http\Request;
9+
use Illuminate\Support\Facades\DB;
710
use App\Http\Controllers\Controller;
811
use App\Http\Requests\CategoryRequest;
12+
use Illuminate\Support\Facades\Storage;
913
use App\Http\Resources\CategoryResource;
1014

1115
class 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.

routes/api.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,7 @@
241241
Route::get('/admin/all/categories', [CategoryController::class, 'all']);Route::get('/admin/all/categories', [CategoryController::class, 'all']);
242242
Route::post('/admin/add/category', [CategoryController::class, 'store']);
243243
Route::get('/admin/category/{id}', [CategoryController::class, 'getCategory']);
244+
Route::post('update/category/{id}', [CategoryController::class, 'update']);
244245
});
245246

246247
Route::middleware(['auth:api', 'scopes:customer'])->prefix('v1')->group(function () {

0 commit comments

Comments
 (0)