From 69b364e67d0af83693d86f7397251cddb67abfae Mon Sep 17 00:00:00 2001 From: ushahidlee Date: Sun, 24 Dec 2023 13:03:38 +0100 Subject: [PATCH] endpoint for media patch (caption only) --- .../V5/Http/Controllers/MediaController.php | 39 +++++++++++++++++++ src/Ushahidi/Modules/V5/routes/api.php | 3 +- 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/src/Ushahidi/Modules/V5/Http/Controllers/MediaController.php b/src/Ushahidi/Modules/V5/Http/Controllers/MediaController.php index adfc7e6c90..ee5e7912ad 100644 --- a/src/Ushahidi/Modules/V5/Http/Controllers/MediaController.php +++ b/src/Ushahidi/Modules/V5/Http/Controllers/MediaController.php @@ -3,6 +3,9 @@ namespace Ushahidi\Modules\V5\Http\Controllers; use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; +use Illuminate\Http\JsonResponse; + use Ushahidi\Modules\V5\Actions\Media\Queries\FetchMediaByIdQuery; use Ushahidi\Modules\V5\Http\Resources\Media\MediaResource; use Ushahidi\Modules\V5\Actions\Media\Commands\CreateMediaCommand; @@ -97,4 +100,40 @@ public function delete(int $id) $this->commandBus->handle(new DeleteMediaCommand($id)); return $this->deleteResponse($id); }// end delete + + /** + * Patch media item + * @param int $id + * @param Request $request + * @return MediaResource|JsonResponse + * @throws \Illuminate\Auth\Access\AuthorizationException + */ + public function patch(int $id, Request $request) + { + $media = Media::find($id); + $caption = $this->getField('caption', $request->input('caption')); + if (!$media) { + return self::make404(); + } + if (!$caption) { + return self::make422("Caption required for media patch call."); + } + + DB::beginTransaction(); + try { + $media->setAttribute('caption', $caption); + $this->authorize('update', $media); + + if ($media->save()) { + DB::commit(); + return new MediaResource($media); + } else { + DB::rollback(); + return self::make422($media->errors); + } + } catch (\Exception $e) { + DB::rollback(); + return self::make500($e->getMessage()); + } + } // end patch } //end class diff --git a/src/Ushahidi/Modules/V5/routes/api.php b/src/Ushahidi/Modules/V5/routes/api.php index 6956744d23..71d5689c70 100644 --- a/src/Ushahidi/Modules/V5/routes/api.php +++ b/src/Ushahidi/Modules/V5/routes/api.php @@ -214,7 +214,7 @@ function () use ($router) { $router->post('/', 'UserController@store'); $router->put('/{id}', 'UserController@update'); $router->delete('/{id}', 'UserController@delete'); - + $router->group( [ 'prefix' => '{user_id}/settings', @@ -489,6 +489,7 @@ function () use ($router) { function () use ($router) { $router->put('/{id}', 'MediaController@update'); $router->delete('/{id}', 'MediaController@delete'); + $router->patch('/{id}', 'MediaController@patch'); } );