Stories 0.2-0.5: rename folders→declarations (backend+frontend), configure Redis for cache/queue/sessions, add foundation database migrations (permissions, archived_at), replace DeclarationStatus enum with architecture lifecycle values, create DeclarationObserver for status transition validation and auto-archive, fix controller status transitions to respect observer rules. 93 tests pass (240 assertions). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
51 lines
1.1 KiB
PHP
51 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Enums;
|
|
|
|
use BenSampo\Enum\Enum;
|
|
|
|
final class DeclarationStatus extends Enum
|
|
{
|
|
const Created = 'created';
|
|
|
|
const EnCours = 'en_cours';
|
|
|
|
const EnAttenteClient = 'en_attente_client';
|
|
|
|
const Termine = 'termine';
|
|
|
|
const Ferme = 'ferme';
|
|
|
|
/**
|
|
* Get French display labels for each status.
|
|
*
|
|
* @return array<string, string>
|
|
*/
|
|
public static function labels(): array
|
|
{
|
|
return [
|
|
self::Created => 'Créé',
|
|
self::EnCours => 'En cours',
|
|
self::EnAttenteClient => 'En attente client',
|
|
self::Termine => 'Terminé',
|
|
self::Ferme => 'Fermé',
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Get the valid next statuses for each status per the architecture status flow.
|
|
*
|
|
* @return array<string, list<string>>
|
|
*/
|
|
public static function allowedTransitions(): array
|
|
{
|
|
return [
|
|
self::Created => [self::EnCours],
|
|
self::EnCours => [self::EnAttenteClient, self::Termine],
|
|
self::EnAttenteClient => [self::EnCours],
|
|
self::Termine => [self::Ferme],
|
|
self::Ferme => [],
|
|
];
|
|
}
|
|
}
|