ldc-boutique-cnc-sable/app/Policies/Backend/OrderPolicy.php

51 lines
1.2 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Policies\Backend;
use App\Dto\OrderDto;
use App\Models\Customer;
use App\Models\Order;
use App\Models\User;
use Domain\Enums\OrderStatus;
use Domain\Enums\UserRole;
class OrderPolicy
{
public function viewAnyToday(User | Customer $user): bool
{
if ($user instanceof Customer) {
return false;
}
return $user->role->isAtLeastEqualsTo(UserRole::Admin);
}
public function viewAny(User | Customer $user): bool
{
if ($user instanceof Customer) {
return false;
}
return $user->role->isAtLeastEqualsTo(UserRole::Admin);
}
public function view(User | Customer $user, Order | OrderDto $_): bool
{
if ($user instanceof Customer) {
return false;
}
return $user->role->isAtLeastEqualsTo(UserRole::Admin);
}
public function cancel(User | Customer $user, Order | OrderDto $order): bool
{
if ($user instanceof Customer) {
return false;
}
return $user->role->isAtLeastEqualsTo(UserRole::Admin) && ! $order->status->equals(OrderStatus::CANCELED);
}
}