ldc-boutique-cnc-sable/app/Http/Controllers/Fo/Ajax/PickupController.php

39 lines
1 KiB
PHP
Raw Permalink Normal View History

2026-06-14 21:32:07 +02:00
<?php
declare(strict_types=1);
namespace App\Http\Controllers\Fo\Ajax;
use App\Contracts\Executor;
2026-06-14 21:32:07 +02:00
use App\Http\Controllers\Controller;
use App\Http\Resources\Fo\Ajax\TimeSlotResource;
use App\Models\Shop;
use App\Queries\Timeslots\GetAvailableTimeslotsQuery;
use App\Queries\Timeslots\GetAvailableTimeslotsQueryInput;
2026-06-14 21:32:07 +02:00
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
class PickupController extends Controller
{
public function __construct(
private readonly Executor $executor,
2026-06-14 21:32:07 +02:00
) {
}
public function getAvailableTimeslots(Shop $shop, GetAvailableTimeslotsQuery $action): AnonymousResourceCollection | JsonResponse
2026-06-14 21:32:07 +02:00
{
$this->authorize('viewPickupTimeslots', $shop);
$result = $this->executor->execute(
$action,
new GetAvailableTimeslotsQueryInput(
$shop->getId()
2026-06-14 21:32:07 +02:00
)
);
return TimeSlotResource::collection(
$result->timeslotList
);
2026-06-14 21:32:07 +02:00
}
}