*/ final class ApplyPickTimeSlot implements Action { public function __construct( private readonly OrderTunnelService $orderTunnelService, ) { } /** * @param \App\Actions\Orders\ApplyPickTimeSlotInput $input */ #[\Override] public function __invoke(ActionInput $input): ?PickupTimeSlot { Assert::isInstanceOf($input, ApplyPickTimeSlotInput::class); $builder = $this->orderTunnelService->getBuilderFromBasketOrFail(); $shop = $this->orderTunnelService->getShopForCustomer($input->shopperId); $timeSlots = $this->orderTunnelService->getAvailableTimeSlots($shop); return $this->orderTunnelService->applyTimeSlot( $builder, $shop, $input->timeslot, $timeSlots ); } }