'Draft', self::Submitted => 'Submitted', self::InReview => 'In Review', self::Approved => 'Approved', self::Rejected => 'Rejected', }; } public function allowedTransitions(): array { return match ($this) { self::Draft => [self::Submitted], self::Submitted => [self::InReview, self::Rejected], self::InReview => [self::Approved, self::Rejected], self::Approved => [], self::Rejected => [self::Draft], }; } public function color(): string { return match ($this) { self::Draft => 'gray', self::Submitted => 'blue', self::InReview => 'yellow', self::Approved => 'green', self::Rejected => 'red', }; } }