Added GetAvailableTimeslotsQuery, GetAvailableTimeslotsQueryInput, and GetAvailableTimeslotsQueryOutput to handle fetching available timeslots for a shop, improving the structure and separation of concerns.
38 lines
1 KiB
PHP
38 lines
1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Http\Controllers\Fo\Ajax;
|
|
|
|
use App\Contracts\Executor;
|
|
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;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
|
|
|
|
class PickupController extends Controller
|
|
{
|
|
public function __construct(
|
|
private readonly Executor $executor,
|
|
) {
|
|
}
|
|
|
|
public function getAvailableTimeslots(Shop $shop, GetAvailableTimeslotsQuery $action): AnonymousResourceCollection | JsonResponse
|
|
{
|
|
$this->authorize('viewPickupTimeslots', $shop);
|
|
|
|
$result = $this->executor->execute(
|
|
$action,
|
|
new GetAvailableTimeslotsQueryInput(
|
|
$shop->getId()
|
|
)
|
|
);
|
|
|
|
return TimeSlotResource::collection(
|
|
$result->timeslotList
|
|
);
|
|
}
|
|
}
|