d2d.emegrendeles.hu/app/Enums/PricelistFileStatusEnum.php
E98Developer 5bf2f83092 ADD EV3-357 Árlista feldolgozás phase5/1 PricelistExecution feature flag + migrációk
- új PricelistExecution Pennant flag (enabled + roles=[developer]) a jóváhagyás,
  végrehajtás és visszavonás rollout-kapujaként
- új execution_failed fájlstátusz: a validálásig tartó szakasz fail státuszától
  szándékosan elkülönítve, mert itt már történhettek termék- és árírások
- PricelistFileStatusEnum::color(): a badge-színek eddig két helyen, kimerítő
  match-ben voltak duplikálva, amit az új case eltört volna
- pricelist_file_lines.applied_snapshot + executed_at a chunkolt, idempotens
  végrehajtáshoz és a kompenzáló visszaállításhoz

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 14:19:28 +02:00

51 lines
1.7 KiB
PHP

<?php
namespace App\Enums;
enum PricelistFileStatusEnum: string
{
case todo = 'todo';
case inprogress = 'inprogress';
case fail = 'fail';
case done = 'done';
case waiting_for_approval = 'waiting_for_approval';
case closed = 'closed';
/**
* A Végrehajtás (Execution) lépés futott hibára. Szándékosan külön áll a `fail`-től:
* a `fail` a validálásig tartó szakasz hibája, ahonnan a fájl újratöltésével (Edit)
* biztonságosan újraindítható a lánc - itt viszont már történhettek termék- és
* árírások, ezért csak a Folytatás vagy a Visszavonás akció indítható.
*/
case execution_failed = 'execution_failed';
public function label(): string
{
return match ($this) {
self::todo => 'elvégzendő',
self::inprogress => 'folyamatban',
self::fail => 'hiba',
self::done => 'elkészült',
self::waiting_for_approval => 'jóváhagyásra vár',
self::closed => 'lezárva',
self::execution_failed => 'végrehajtási hiba',
};
}
/**
* Badge szín a felülethez (a PricelistFileLineStatusEnum mintáját követve, hogy a
* színek egy helyen legyenek, és egy új státusz ne törjön el minden match-et).
*/
public function color(): string
{
return match ($this) {
self::todo => 'gray',
self::inprogress => 'info',
self::done => 'success',
self::fail => 'danger',
self::waiting_for_approval => 'primary',
self::closed => 'warning',
self::execution_failed => 'danger',
};
}
}