NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

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:

StavKedy nastaneUdalosť
CreatedPredvolený stav nového objektu Campaign.—
Pendingprepare() otvoril dávku jobov a uložil príjemcov; nič sa ešte neodoslalo.CampaignPrepared
Processingstart() vyhral presun zo stavu Pending a zaradil joby príjemcov; nastaví sa startedAt.CampaignStarted
CompletedDobehli všetky joby doručenia — niektoré mohli zlyhať — alebo nebolo komu posielať.CampaignCompleted
FailedDobehli všetky joby doručenia a ani jedno doručenie neprešlo.CampaignFailed
Canceledcancel() 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 kryptomien

Odoslaní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.