in_array($newStatus, [self::IN_PROGRESS, self::CANCELLED]), self::IN_PROGRESS => in_array($newStatus, [self::COMPLETED, self::FAILED, self::CANCELLED]), self::COMPLETED, self::FAILED, self::CANCELLED => false, }; } public function isTerminal(): bool { return in_array($this, [self::COMPLETED, self::FAILED, self::CANCELLED]); } public function label(): string { return match ($this) { self::PENDING => 'Offen', self::IN_PROGRESS => 'In Arbeit', self::COMPLETED => 'Abgeschlossen', self::FAILED => 'Fehlgeschlagen', self::CANCELLED => 'Abgebrochen', }; } }