Files
GSB-Construction/Modules/MaterialLogistics/app/Enums/DeploymentStatus.php

50 lines
1.4 KiB
PHP

<?php
namespace Modules\MaterialLogistics\Enums;
enum DeploymentStatus: string
{
case Requested = 'requested';
case PendingDispatch = 'pending_dispatch';
case InTransit = 'in_transit';
case Delivered = 'delivered';
case Consumed = 'consumed';
case Cancelled = 'cancelled';
public function label(): string
{
return match ($this) {
self::Requested => 'Requested',
self::PendingDispatch => 'Pending Dispatch',
self::InTransit => 'In Transit',
self::Delivered => 'Delivered',
self::Consumed => 'Consumed',
self::Cancelled => 'Cancelled',
};
}
public function allowedTransitions(): array
{
return match ($this) {
self::Requested => [self::PendingDispatch, self::Cancelled],
self::PendingDispatch => [self::InTransit, self::Cancelled],
self::InTransit => [self::Delivered],
self::Delivered => [self::Consumed],
self::Consumed => [],
self::Cancelled => [],
};
}
public function color(): string
{
return match ($this) {
self::Requested => 'gray',
self::PendingDispatch => 'yellow',
self::InTransit => 'blue',
self::Delivered => 'green',
self::Consumed => 'emerald',
self::Cancelled => 'red',
};
}
}