ldc-boutique-cnc-sable/app/Policies/Frontend/OrderTunnelStepPolicy.php
2026-10-27 09:58:12 +01:00

58 lines
1.3 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Policies\Frontend;
use App\Models\Customer;
use App\Models\User;
use Domain\Enums\OrderTunnelStep;
use Domain\Services\OrderTunnelService;
use Illuminate\Support\Facades\Gate;
class OrderTunnelStepPolicy
{
public function __construct(
private readonly OrderTunnelService $orderTunnelService
) {
}
public function canReviewBasketSummary(User | Customer $user): bool
{
if ($user instanceof User) {
return false;
}
return Gate::allows(
'customerPassOrders',
$user
) && $this->orderTunnelService
->canAccessStep(OrderTunnelStep::REVIEW);
}
public function canPickTimeSlot(User | Customer $user): bool
{
if ($user instanceof User) {
return false;
}
return Gate::allows(
'customerPassOrders',
$user
) && $this->orderTunnelService
->canAccessStep(OrderTunnelStep::BOOKING);
}
public function canFinalizeOrder(User | Customer $user): bool
{
if ($user instanceof User) {
return false;
}
return Gate::allows(
'customerPassOrders',
$user
) && $this->orderTunnelService
->canAccessStep(OrderTunnelStep::CONFIRMATION);
}
}