'Draft', self::Submitted => 'Submitted', self::Approved => 'Approved', self::Paid => 'Paid', self::Rejected => 'Rejected', }; } public function allowedTransitions(): array { return match ($this) { self::Draft => [self::Submitted], self::Submitted => [self::Approved, self::Rejected], self::Approved => [self::Paid], self::Paid => [], self::Rejected => [self::Draft], }; } }