diff --git a/app/Http/Controllers/MediaController.php b/app/Http/Controllers/MediaController.php index 616a445..4f938e4 100644 --- a/app/Http/Controllers/MediaController.php +++ b/app/Http/Controllers/MediaController.php @@ -66,6 +66,8 @@ class MediaController extends Controller /** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Sujet> */ $sujets = $user->sujets; + // ! Has to flush Media cache before querying basket with media list + Media::flushQueryCache(); /** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Panier> */ $paniers = $user->paniersOwner; /** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Societe> */ diff --git a/app/Http/Controllers/PanierController.php b/app/Http/Controllers/PanierController.php index 0788fbf..3871f26 100644 --- a/app/Http/Controllers/PanierController.php +++ b/app/Http/Controllers/PanierController.php @@ -11,6 +11,8 @@ use Illuminate\Support\Str; use App\Models\Panier; use App\Models\Format; use App\Models\Media; +use Illuminate\Contracts\View\View; +use Illuminate\Http\JsonResponse; class PanierController extends Controller { @@ -19,15 +21,16 @@ class PanierController extends Controller /** * Page principale des paniers * - * @return \Illuminate\View\View|\Illuminate\Contracts\View\Factory + * @return \Illuminate\Contracts\View\View */ - public function index() + public function index(): View { /** @var \App\Models\User $user */ $user = \auth()->user(); - - /** @var \Illuminate\Database\Eloquent\Collection $paniers */ + // ! Has to flush Media cache before querying basket with media list + Media::flushQueryCache(); $paniers = $user->paniersOwner; + return view('panier.index')->with([ 'paniers' => $paniers, ]); @@ -39,12 +42,12 @@ class PanierController extends Controller * * @return \Illuminate\Http\JsonResponse */ - public function getBaskets() + public function getBaskets(): JsonResponse { /** @var \App\Models\User $user */ $user = \auth()->user(); - - /** @var \Illuminate\Database\Eloquent\Collection $paniers */ + // ! Has to flush Media cache before querying basket with media list + Media::flushQueryCache(); $paniers = $user->paniersOwner; return response()->json($paniers); @@ -56,16 +59,18 @@ class PanierController extends Controller * @param \App\Http\Requests\Bo\Ajax\AddMediasBasketRequest $request * @return \Illuminate\Http\JsonResponse */ - public function addMediasBasket(AddMediasBasketRequest $request) + public function addMediasBasket(AddMediasBasketRequest $request): JsonResponse { /** @var \App\Models\Panier $panier */ - $panier = Panier::whereId($request->panier_id) - ->with('mediaList')->firstOrFail(); + $panier = Panier::query() + ->where('id', $request->input('panier_id')) + ->with('mediaList') + ->firstOrFail(); // * Sync every media to basket $panier->mediaList()->sync(array_merge( $panier->mediaList()->pluck('id')->all(), - $request->mediaList + $request->input('mediaList') )); return response()->json(); @@ -77,15 +82,18 @@ class PanierController extends Controller * @param \App\Http\Requests\Bo\Ajax\RemoveMediasBasketRequest $request * @return \Illuminate\Http\JsonResponse */ - public function removeMediasBasket(RemoveMediasBasketRequest $request) + public function removeMediasBasket(RemoveMediasBasketRequest $request): JsonResponse { - /** @var \App\Models\Panier $panier */ - $panier = Panier::whereId($request->panier_id) - ->with('mediaList')->firstOrFail(); + $panier = Panier::query() + ->where('id', $request->input('panier_id')) + ->with('mediaList') + ->firstOrFail(); /** @var \App\Models\Media $media */ - $media = Media::whereId($request->media_id)->firstOrFail(); + $media = Media::query() + ->where('id', $request->input('media_id')) + ->firstOrFail(); $panier->mediaList()->detach($media); @@ -98,13 +106,13 @@ class PanierController extends Controller * @param \App\Http\Requests\Bo\Ajax\CreateBasketRequest $request * @return \Illuminate\Http\JsonResponse */ - public function createBasket(CreateBasketRequest $request) + public function createBasket(CreateBasketRequest $request): JsonResponse { /** @var \App\Models\User $user */ $user = auth()->user(); $panier = new Panier(); - $panier->libelle = $request->title; + $panier->libelle = $request->input('title'); $panier->uid = Str::uuid(); $panier->owner()->associate($user); $panier->saveOrFail(); @@ -118,10 +126,12 @@ class PanierController extends Controller * @param \App\Http\Requests\Bo\Ajax\DestroyBasketRequest $request * @return \Illuminate\Http\JsonResponse */ - public function destroyBasket(DestroyBasketRequest $request) + public function destroyBasket(DestroyBasketRequest $request): JsonResponse { /** @var \App\Models\Panier $basket */ - $basket = Panier::whereId($request->basket_id)->firstOrFail(); + $basket = Panier::query() + ->where('id', $request->input('basket_id')) + ->firstOrFail(); $basket->deleteOrFail(); @@ -134,9 +144,9 @@ class PanierController extends Controller * Page publique d'un panier * * @param \App\Models\Panier $panier - * @return \Illuminate\View\View|\Illuminate\Contracts\View\Factory + * @return \Illuminate\Contracts\View\View */ - public function showBasket(Panier $panier) + public function showBasket(Panier $panier): View { /** @var \App\Models\User|null $user */ $user = auth()->user(); @@ -150,9 +160,12 @@ class PanierController extends Controller } /** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Format> $formats */ - $formats = Format::withoutGlobalScope('App\Scopes\SystemScope') - ->where('system', true)->get(); - return view('panier.show')->with([ + $formats = Format::query() + ->withoutGlobalScope('App\Scopes\SystemScope') + ->where('system', true) + ->get(); + + return view('panier.show', [ 'panier' => $panier, 'formats' => $formats, ]); @@ -164,10 +177,12 @@ class PanierController extends Controller * @param \App\Http\Requests\Bo\Ajax\SaveBasketPropsRequest $request * @return \Illuminate\Http\JsonResponse */ - public function saveBasketProperty(SaveBasketPropsRequest $request) + public function saveBasketProperty(SaveBasketPropsRequest $request): JsonResponse { /** @var \App\Models\Panier $panier */ - $panier = Panier::whereId($request->basket_id)->firstOrFail(); + $panier = Panier::query() + ->where('id', $request->input('basket_id')) + ->firstOrFail(); $panier->fill($request->validated()); $panier->saveOrFail(); diff --git a/app/Models/Media.php b/app/Models/Media.php index 41e49eb..7fa8d76 100644 --- a/app/Models/Media.php +++ b/app/Models/Media.php @@ -457,7 +457,7 @@ class Media extends Model */ public function paniers() { - return $this->belongsToMany(Panier::class); + return $this->belongsToMany(Panier::class, 'panier_media'); } // * METHODS @@ -723,7 +723,7 @@ class Media extends Model // * create preview /** @var \App\Models\Format $format */ $format = Format::withoutGlobalScope('App\Scopes\SystemScope') - ->where('libelle', '=', 'preview')->firstOrFail(); + ->where('libelle', '=', 'preview')->firstOrFail(); if ($this->extension == MediaExtension::gif) { if ($this->largeur >= $format->largeur || $this->hauteur >= $format->hauteur || $this->largeur == "") { @@ -753,7 +753,7 @@ class Media extends Model // * create thumb /** @var \App\Models\Format $format */ $format = Format::withoutGlobalScope('App\Scopes\SystemScope') - ->where('libelle', '=', 'thumb')->firstOrFail(); + ->where('libelle', '=', 'thumb')->firstOrFail(); if ($this->extension != MediaExtension::png) { $im->setImageBackgroundColor('#ffffff'); $im->setImageAlphaChannel(\Imagick::ALPHACHANNEL_REMOVE); diff --git a/app/Models/User.php b/app/Models/User.php index ca35fe0..1bb03c0 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -31,7 +31,7 @@ use Illuminate\Notifications\Notifiable; * Historiques HasMany relationship. * @property-read \Illuminate\Database\Eloquent\Collection<\App\Models\Recherche> $recherches * Recherches HasMany relationship. - * @property-read \Illuminate\Database\Eloquent\Collection<\App\Models\Recherche> $paniersOwner + * @property-read \Illuminate\Database\Eloquent\Collection<\App\Models\Panier> $paniersOwner * Paniers HasMany relationship that belongs to the user. * @property-read \Illuminate\Database\Eloquent\Collection<\App\Models\Panier> $paniersFavoris * Paniers HasMany relationship.