ldc-legaulois/app/Http/Controllers/Club/FavoriteController.php
2026-09-25 16:25:31 +02:00

53 lines
1.8 KiB
PHP

<?php
namespace App\Http\Controllers\Club;
use App\Http\Controllers\Controller;
use App\Http\Requests\Club\Favorite\UpdateFavoriteRequest;
use App\Lib\Helpers\CollectionHelper;
use App\Models\Customer;
use Illuminate\Contracts\View\View;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class FavoriteController extends Controller
{
/**
* Display a listing of the resource.
*/
public function indexProducts(Request $request): 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.
*/
public function indexRecipes(Request $request): 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.
*/
public function update(UpdateFavoriteRequest $request): JsonResponse
{
$customer = Customer::query()->where('id', $request->validated()['customer'])->first();
$currentFavorites = $customer->{$request->validated()['class']}->pluck('id');
/** @var int $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'),
]);
}
}