ldc-legaulois/app/Http/Controllers/Club/FavoriteController.php
2024-09-13 15:46:08 +02:00

57 lines
2.1 KiB
PHP

<?php
namespace App\Http\Controllers\Club;
use App\Http\Controllers\Controller;
use App\Http\Requests\Club\Favorite\UpdateFavoriteRequest;
use App\Models\Customer;
use App\Lib\Helpers\CollectionHelper;
use Illuminate\Http\Request;
class FavoriteController extends Controller
{
/**
* Display a listing of the resource.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Contracts\View\View
*/
public function indexProducts(Request $request): \Illuminate\Contracts\View\View
{
$models = CollectionHelper::paginateManually(auth('club')->user()->products, 9, $request->page ?? 1);
return view('club.pages.favorites.products', compact('models'));
}
/**
* Display a listing of the resource.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Contracts\View\View
*/
public function indexRecipes(Request $request): \Illuminate\Contracts\View\View
{
$models = CollectionHelper::paginateManually(auth('club')->user()->recipes, 9, $request->page ?? 1);
return view('club.pages.favorites.recipes', compact('models'));
}
/**
* Update favorites models for a specific club customer.
*
* @param \App\Http\Requests\Club\Favorite\UpdateFavoriteRequest $request
* @return \Illuminate\Http\JsonResponse
*/
public function update(UpdateFavoriteRequest $request): \Illuminate\Http\JsonResponse
{
$customer = Customer::query()->where('id', $request->validated()['customer'])->first();
$currentFavorites = $customer->{$request->validated()['class']}->pluck('id');
/** @var integer $newFavorites */
$newFavorites = $request->validated()['model'];
($currentFavorites->contains($newFavorites))
? $customer->{$request->validated()['class']}()->detach($newFavorites)
: $customer->{$request->validated()['class']}()->attach($newFavorites);
return response()->json([
'status' => 'OK',
'data' => $customer->{$request->validated()['class']}()->get()->pluck('id'),
]);
}
}