50 lines
1.4 KiB
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',
|
|
};
|
|
}
|
|
}
|