From 9ae484d58432491ed0166da9cb97fae44ead7873 Mon Sep 17 00:00:00 2001 From: Giovanni-Josserand Date: Wed, 1 Apr 2026 23:30:17 +0200 Subject: [PATCH] add methods for EventPicture' --- app/Http/Controllers/EventsController.php | 42 +++++++++++++++++ .../Controllers/ProfilePhotoController.php | 47 ------------------- app/Http/Controllers/UserController.php | 38 +++++++++++++++ routes/api.php | 6 +-- routes/events.php | 6 +++ 5 files changed, 89 insertions(+), 50 deletions(-) delete mode 100644 app/Http/Controllers/ProfilePhotoController.php diff --git a/app/Http/Controllers/EventsController.php b/app/Http/Controllers/EventsController.php index 2422f20..5056f81 100644 --- a/app/Http/Controllers/EventsController.php +++ b/app/Http/Controllers/EventsController.php @@ -13,6 +13,7 @@ use Illuminate\Http\JsonResponse; use Illuminate\Support\Facades\Gate; use Illuminate\Support\Facades\Log; use Carbon\Carbon; +use Illuminate\Support\Facades\Storage; class EventsController extends Controller @@ -136,6 +137,7 @@ class EventsController extends Controller "created_at" => $event->created_at, "updated_at" => $event->updated_at, "tasks" => $event->tasks, + "event_photo_path" =>$event->event_photo_path, ]); } catch (\Exception $e) { Log::info($e->getMessage()); @@ -164,4 +166,44 @@ class EventsController extends Controller ], 500); } } + + public function show(int $id) + { + $event = Event::findOrFail($id); + + return response()->json([ + 'event_photo_path' => $event->event_photo_path + ]); + } + + public function updatePhoto(Request $request, int $id) + { + $request->validate([ + 'photo' => 'required|image|mimes:jpeg,png,jpg,gif|max:2048', + ]); + $event = Event::findOrFail($id); + $path = $request->file('photo')->store('event-photos', 'public'); + if ($event->event_photo_path) { + Storage::disk('public')->delete($event->event_photo_path); + } + $event->update([ + 'event_photo_path' => $path + ]); + return response()->json([ + 'event_photo_path' => $path + ]); + } + public function destroy(int $id) + { + $event = Event::findOrFail($id); + if ($event->event_photo_path) { + Storage::disk('public')->delete($event->event_photo_path); + $event->update([ + 'event_photo_path' => null + ]); + } + return response()->json([ + 'message' => 'Photo supprimée' + ]); + } } diff --git a/app/Http/Controllers/ProfilePhotoController.php b/app/Http/Controllers/ProfilePhotoController.php deleted file mode 100644 index 9f40480..0000000 --- a/app/Http/Controllers/ProfilePhotoController.php +++ /dev/null @@ -1,47 +0,0 @@ -user(); - return response()->json(['profile_photo_path' => $user->profile_photo_path]); - } - - public function update(Request $request) - { - $request->validate([ - 'photo' => 'required|image|mimes:jpeg,png,jpg,gif|max:2048', - ]); - - $user = $request->user(); - $path = $request->file('photo')->store('profile-photos', 'public'); - - // Supprimer l'ancienne photo si elle existe - if ($user->profile_photo_path) { - Storage::disk('public')->delete($user->profile_photo_path); - } - - $user->update(['profile_photo_path' => $path]); - - return response()->json(['profile_photo_path' => $path]); - } - - public function destroy(Request $request) - { - $user = $request->user(); - - if ($user->profile_photo_path) { - Storage::disk('public')->delete($user->profile_photo_path); - $user->update(['profile_photo_path' => null]); - } - - return response()->json(['message' => 'Photo supprimée']); - } -} diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index f548689..bd43646 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -25,6 +25,7 @@ use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Log; use App\Services\UserService; use Illuminate\Support\Facades\Mail; +use Illuminate\Support\Facades\Storage; use Pest\Support\Str; use Propaganistas\LaravelPhone\PhoneNumber; @@ -454,4 +455,41 @@ class UserController extends Controller return response()->json(['message' => 'Server error'], 500); } } + + public function show(Request $request) + { + $user = $request->user(); + return response()->json(['profile_photo_path' => $user->profile_photo_path]); + } + + public function updatePhoto(Request $request) + { + $request->validate([ + 'photo' => 'required|image|mimes:jpeg,png,jpg,gif|max:2048', + ]); + + $user = $request->user(); + $path = $request->file('photo')->store('profile-photos', 'public'); + + // Supprimer l'ancienne photo si elle existe + if ($user->profile_photo_path) { + Storage::disk('public')->delete($user->profile_photo_path); + } + + $user->update(['profile_photo_path' => $path]); + + return response()->json(['profile_photo_path' => $path]); + } + + public function destroy(Request $request) + { + $user = $request->user(); + + if ($user->profile_photo_path) { + Storage::disk('public')->delete($user->profile_photo_path); + $user->update(['profile_photo_path' => null]); + } + + return response()->json(['message' => 'Photo supprimée']); + } } diff --git a/routes/api.php b/routes/api.php index 079039c..c72ebf4 100644 --- a/routes/api.php +++ b/routes/api.php @@ -6,9 +6,9 @@ use App\Http\Controllers\ExportController; use App\Http\Controllers\ProfilePhotoController; Route::middleware('auth:sanctum')->group(function () { - Route::post('/profile-photo', [ProfilePhotoController::class, 'update']); - Route::delete('/profile-photo', [ProfilePhotoController::class, 'destroy']); - Route::get('/profile-photo', [ProfilePhotoController::class, 'show']); + Route::post('/profile-photo', [\App\Http\Controllers\UserController::class, 'updatePhoto']); + Route::delete('/profile-photo', [\App\Http\Controllers\UserController::class, 'destroy']); + Route::get('/profile-photo', [\App\Http\Controllers\UserController::class, 'show']); }); diff --git a/routes/events.php b/routes/events.php index 002dc03..c66df7a 100644 --- a/routes/events.php +++ b/routes/events.php @@ -34,3 +34,9 @@ Route::middleware(['web', 'auth:sanctum'])->get('/events/search', [SearchControl Route::middleware(['web', 'auth:sanctum'])->get('/events/{id}', [EventsController::class, "getEvent"]); Route::middleware(['web', 'auth:sanctum'])->get('/events/tasks/{id}/assigned', [EventsController::class, "isUserAssigned"]); + +Route::middleware(['web', 'auth:sanctum'])->get('/events/{id}/photo', [EventsController::class, 'show']); + +Route::middleware(['web', 'auth:sanctum'])->post('/events/{id}/photo/update', [EventsController::class, 'updatePhoto']); + +Route::middleware(['web', 'auth:sanctum'])->delete('/events/{id}/photo', [EventsController::class, 'destroy']);