Files
GSB-Construction/Modules/ProjectManagement/app/Enums/ProjectStatus.php

38 lines
1.1 KiB
PHP

<?php
namespace Modules\ProjectManagement\Enums;
enum ProjectStatus: string
{
case UnderBidding = 'under_bidding';
case Planning = 'planning';
case InProgress = 'in_progress';
case OnHold = 'on_hold';
case Completed = 'completed';
case Closed = 'closed';
public function label(): string
{
return match ($this) {
self::UnderBidding => 'Under Bidding',
self::Planning => 'Planning',
self::InProgress => 'In Progress',
self::OnHold => 'On Hold',
self::Completed => 'Completed',
self::Closed => 'Closed',
};
}
public function allowedTransitions(): array
{
return match ($this) {
self::UnderBidding => [self::Planning, self::Closed],
self::Planning => [self::InProgress, self::OnHold, self::Closed],
self::InProgress => [self::OnHold, self::Completed],
self::OnHold => [self::InProgress, self::Closed],
self::Completed => [self::Closed],
self::Closed => [],
};
}
}