Backup #814
| ID | 814 |
| Dateipfad | /var/www/dev.campus.systemische-tools.de/src/Domain/ValueObject/ContentOrderStatus.php |
| Version | 1 |
| Typ |
modified |
| Größe | 2.4 KB |
| Hash | 2d92dc2b4cb733bc81205a8e58b980109a38ec6175c1632156fe3f34715af420 |
| Datum | 2025-12-23 08:08:27 |
| Geändert von | claude-code-hook |
| Grund | Claude Code Pre-Hook Backup vor Edit-Operation |
| Datei existiert |
Ja
|
Dateiinhalt
<?php
namespace Domain\ValueObject;
/**
* Status enum for content orders with state machine transitions.
*/
enum ContentOrderStatus: string
{
case DRAFT = 'draft';
case GENERATING = 'generating';
case CRITIQUE = 'critique';
case REVISION = 'revision';
case VALIDATE = 'validate';
case APPROVE = 'approve';
case PUBLISHED = 'published';
/**
* Check if transition to target status is allowed.
*/
public function canTransitionTo(self $target): bool
{
return in_array($target, $this->getAllowedTransitions(), true);
}
/**
* Get all allowed transitions from current status.
*
* @return array<self>
*/
public function getAllowedTransitions(): array
{
return match ($this) {
self::DRAFT => [self::GENERATING],
self::GENERATING => [self::CRITIQUE, self::DRAFT],
self::CRITIQUE => [self::REVISION, self::VALIDATE],
self::REVISION => [self::CRITIQUE],
self::VALIDATE => [self::APPROVE, self::REVISION],
self::APPROVE => [self::PUBLISHED, self::REVISION],
self::PUBLISHED => [],
};
}
/**
* Check if this is a terminal (final) status.
*/
public function isTerminal(): bool
{
return $this === self::PUBLISHED;
}
/**
* Check if content can be edited in this status.
*/
public function isEditable(): bool
{
return in_array($this, [self::DRAFT, self::REVISION], true);
}
/**
* Get human-readable label.
*/
public function label(): string
{
return match ($this) {
self::DRAFT => 'Entwurf',
self::GENERATING => 'Wird generiert',
self::CRITIQUE => 'In Kritik',
self::REVISION => 'In Überarbeitung',
self::VALIDATE => 'Zur Prüfung',
self::APPROVE => 'Genehmigt',
self::PUBLISHED => 'Veröffentlicht',
};
}
/**
* Get CSS class for badge styling.
*/
public function badgeClass(): string
{
return match ($this) {
self::DRAFT => 'draft',
self::GENERATING => 'pending',
self::CRITIQUE => 'warning',
self::REVISION => 'warning',
self::VALIDATE => 'info',
self::APPROVE => 'success',
self::PUBLISHED => 'completed',
};
}
}
Vollständig herunterladen
Aktionen
← Zurück zur Übersicht