From e0ca3acf238a83dec4604520ab83bbcea48810bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Munsch?= Date: Thu, 14 Dec 2023 13:21:05 +0100 Subject: [PATCH] MediaController::loadMedia refactor --- app/Http/Controllers/MediaController.php | 57 ++++++++++++++---------- 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/app/Http/Controllers/MediaController.php b/app/Http/Controllers/MediaController.php index 1f71574..bfd76ea 100644 --- a/app/Http/Controllers/MediaController.php +++ b/app/Http/Controllers/MediaController.php @@ -38,6 +38,7 @@ use Illuminate\Database\Eloquent\ModelNotFoundException; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; +use Illuminate\Support\Arr; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\File; @@ -102,7 +103,7 @@ class MediaController extends Controller $textSearch, $filters, intval(Dossier::where('id', $dossier_id)->exists() ? - $dossier_id : (in_array($dossier_id, [-1, 0]) ? $dossier_id : -1)) + $dossier_id : (in_array($dossier_id, [-1, 0]) ? $dossier_id : -1)) ); } @@ -156,12 +157,16 @@ class MediaController extends Controller $user = auth()->user(); /** @var \App\Models\Dossier|null */ - $dossier = Dossier::where('id', $request->folder)->first(); + $dossier = Dossier::query() + ->with('dossierParent') + ->where('id', $request->input('folder')) + ->first(); $response = []; - $filters = (object)collect($request->filters)->all(); + $filters = (object)collect($request->input('filters'))->all(); - $isDepot = ($dossier->parent_id ?? null) === 1 || ($dossier->id ?? null) === 1; + /** @var boolean Est un dossier Dépot ? */ + $isDepot = !empty($dossier) and (\optional($dossier->dossierParent)->id === 1 || $dossier->id === 1); /** * Elastic Search must conditions @@ -220,26 +225,30 @@ class MediaController extends Controller 'bool.should' => $esShould, 'bool.filter' => $esFilters, ]); + $sort = [[$orderField => ['order' => $order]]]; - $sort = [[$orderField => ['order' => $order]]]; - - $response['data'] = Media::searchByQuery( + Arr::set($response, 'data', Media::searchByQuery( $query, null, null, intval($request->post('limit', 50)), intval($request->post('offset', 0)), $sort + )); + + Arr::set($response, 'draggable', $user->hasRole([ + config('roles.const.ADMIN'), + config('roles.const.REDACTEUR') + ])); + Arr::set($response, 'isDepot', $isDepot); + Arr::set( + $response, + 'isCAQuery', + $searchText && + strpos($searchText, '=') !== false && + \strval(collect(explode('=', $searchText))->get(0)) === 'ca' ); - - $response['draggable'] = $user->hasRole([config('roles.const.ADMIN'), config('roles.const.REDACTEUR')]); - $response['isDepot'] = $isDepot; - - $response['isCAQuery'] = $searchText && - strpos($searchText, '=') !== false && - \strval(collect(explode('=', $searchText))->get(0)) === 'ca'; - - $response['role'] = $user->role; + Arr::set($response, 'role', $user->role); return \response()->json($response); } @@ -262,7 +271,7 @@ class MediaController extends Controller /** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Media> */ $mediaList = Media::whereIn('id', collect($request->mediaList)->pluck('id')) - ->where('isLocked', false)->get(); + ->where('isLocked', false)->get(); $destinationDossierId = \intval($request->dossier_id); @@ -346,7 +355,7 @@ class MediaController extends Controller }); } catch (ModelNotFoundException | \RuntimeException $e) { return response()->json($e->getMessage(), 500); - }//end try + } //end try } /** @@ -416,7 +425,7 @@ class MediaController extends Controller 'status' => false, 'error' => trans('Une erreur est survenue veuillez réessayer') ]); - }//end try + } //end try } /** @@ -751,8 +760,8 @@ class MediaController extends Controller $history = Historique::whereHas('media', function ($q) use ($media) { $q->whereId($media->id); })->with('user') - ->orderBy('created_date', 'DESC') - ->get(); + ->orderBy('created_date', 'DESC') + ->get(); return \response()->json([ 'history' => $history, 'vignettes' => $this->getVignettesByMedia($media) @@ -1062,9 +1071,9 @@ class MediaController extends Controller ]; $sys_extension = in_array($media->extension, [ - MediaExtension::pdf, - MediaExtension::ai, - MediaExtension::psd + MediaExtension::pdf, + MediaExtension::ai, + MediaExtension::psd ]) ? MediaExtension::png : $media->extension->value; $vignettes['preview'] = [