name; } public function getColor(): string | array | null { return match ($this) { self::Active => 'primary', self::Upcoming, self::Paused => 'warning', self::Expired => 'danger', self::Archived => 'gray', }; } /** * Check if the status is set manually (not calculated from dates) */ public function isManualStatus(): bool { return in_array($this, [self::Paused, self::Archived]); } /** * Check if the status is system-calculated based on dates */ public function isSystemStatus(): bool { return in_array($this, [self::Active, self::Upcoming, self::Expired]); } }