Stavy kampane
Každá kampaň prechádza stavmi enumu CampaignStatus. Každý prechod spustí udalosť životného cyklu — ale len pri skutočnej zmene stavu, takže opakované volania ju nespustia znova:
| Stav | Kedy nastane | Udalosť |
|---|---|---|
Created | Predvolený stav nového objektu Campaign. | — |
Pending | prepare() otvoril dávku jobov a uložil príjemcov; nič sa ešte neodoslalo. | CampaignPrepared |
Processing | start() vyhral presun zo stavu Pending a zaradil joby príjemcov; nastaví sa startedAt. | CampaignStarted |
Completed | Dobehli všetky joby doručenia — niektoré mohli zlyhať — alebo nebolo komu posielať. | CampaignCompleted |
Failed | Dobehli všetky joby doručenia a ani jedno doručenie neprešlo. | CampaignFailed |
Canceled | cancel() zrušil dávku. | CampaignCancelled |
startedAt sa nastaví pri prvom prechode do Processing, endedAt pri prvom koncovom stave. Koncové stavy sú Completed, Failed a Canceled a sú konečné — zrušená kampaň zostane v stave Canceled, aj keď jej dávka dobehne. Každý prechod je compare-and-set nad uloženým stavom, takže dva procesy súperiace o jednu kampaň ju nikdy nepresunú oba.
Pomocné metódy enumu
CampaignStatus je enum s reťazcovými hodnotami — každá hodnota sa zhoduje s názvom prípadu — a nad traitom Helpers z enums-for-laravel pridáva isTerminal():
use RoundlyConsulting\Campaigns\Enums\CampaignStatus;
CampaignStatus::Processing->isTerminal(); // false
CampaignStatus::Canceled->isTerminal(); // true — Completed, Failed and Canceled are terminal
CampaignStatus::values(); // Collection of 'Created', 'Pending', 'Processing', …
CampaignStatus::toOptions(); // Collection: ['Created' => 'Created', …] for selects
CampaignStatus::validationRule(); // 'in:Created,Pending,Processing,Completed,Failed,Canceled'
CampaignStatus::tryFromName('Pending'); // CampaignStatus::Pending
CampaignStatus::hasValue('Failed'); // true
CampaignStatus::Completed->label(); // 'Completed'Trait prináša aj labels(), options(), readable() a ďalšie vyhľadávania prípadov ako tryFromName() či hasValue(). validationRule() vložíte priamo do form requestu, keď filtrujete kampane podľa stavu.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.