SUBD_Transport_Company/app/Policies/DeliveryPolicy.php

51 lines
1.4 KiB
PHP
Raw Normal View History

<?php
namespace App\Policies;
use App\Enums\RoleEnum;
2024-01-30 11:21:30 +04:00
use App\Enums\StatusEnum;
use App\Models\Delivery;
use App\Models\User;
class DeliveryPolicy
{
public function view(User $user, Delivery $delivery)
{
if($user->role == RoleEnum::DRIVER) {
2024-01-30 11:21:30 +04:00
return $delivery->user_id == $user->id;
}
return $user->warehouse_id == $delivery->warehouse_id;
}
public function create(User $user)
{
return $user->role == RoleEnum::ADMIN || $user->role == RoleEnum::DISPATCHER;
}
public function update(User $user, Delivery $delivery)
{
return ($user->role == RoleEnum::ADMIN || $user->role == RoleEnum::DISPATCHER) &&
$delivery->warehouse_id == $user->warehouse_id;
}
public function delete(User $user, Delivery $delivery)
{
return $user->role == RoleEnum::ADMIN && $delivery->warehouse_id == $user->warehouse_id;
}
2024-01-30 11:21:30 +04:00
public function startDelivery(User $user, Delivery $delivery)
{
return $user->role == RoleEnum::DISPATCHER &&
$delivery->warehouse_id == $user->warehouse_id &&
$delivery->status == StatusEnum::CREATED;
}
public function endDelivery(User $user, Delivery $delivery)
{
return $user->role == RoleEnum::DRIVER &&
$delivery->warehouse_id == $user->warehouse_id &&
$delivery->status == StatusEnum::SENT;
}
}