diff --git a/app/Http/Controllers/MediaController.php b/app/Http/Controllers/MediaController.php index a8361c7..0b477ff 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; @@ -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); }