2026-03-12 18:25:32 +00:00
|
|
|
<?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';
|
|
|
|
|
|
2026-03-20 12:00:24 +00:00
|
|
|
const MiseEnDemeure = 'mise_en_demeure';
|
|
|
|
|
|
2026-03-12 18:25:32 +00:00
|
|
|
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é',
|
2026-03-20 12:00:24 +00:00
|
|
|
self::MiseEnDemeure => 'Mise en demeure',
|
2026-03-12 18:25:32 +00:00
|
|
|
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],
|
2026-03-20 12:00:24 +00:00
|
|
|
self::EnAttenteClient => [self::EnCours, self::MiseEnDemeure],
|
2026-03-12 18:25:32 +00:00
|
|
|
self::Termine => [self::Ferme],
|
2026-03-20 12:00:24 +00:00
|
|
|
self::MiseEnDemeure => [self::EnCours, self::Ferme],
|
2026-03-12 18:25:32 +00:00
|
|
|
self::Ferme => [],
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
}
|