ContentOrderStatus.php
- Pfad:
src/Domain/ValueObject/ContentOrderStatus.php - Namespace: Domain\ValueObject
- Zeilen: 93 | Größe: 2,443 Bytes
- Geändert: 2025-12-23 08:08:27 | Gescannt: 2025-12-31 10:22:15
Code Hygiene Score: 100
- Dependencies: 100 (25%)
- LOC: 100 (20%)
- Methods: 100 (20%)
- Secrets: 100 (15%)
- Classes: 100 (10%)
- Magic Numbers: 100 (10%)
Keine Issues gefunden.
Klassen 1
-
ContentOrderStatusenum Zeile 9
Funktionen 6
-
canTransitionTo()public Zeile 22 -
getAllowedTransitions()public Zeile 32 -
isTerminal()public Zeile 48 -
isEditable()public Zeile 56 -
label()public Zeile 64 -
badgeClass()public Zeile 80
Versionen 1
-
v1
2025-12-23 08:08 | claude-code-hook | modified
Claude Code Pre-Hook Backup vor Edit-Operation
Code
<?php
declare(strict_types=1);
namespace Domain\ValueObject;
// @responsibility: Content-Order-Status-Enum mit State-Machine
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',
};
}
}