'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::InProgress, 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 => [], }; } }