Životný cyklus stavu
Stav je strážený stavový automat. Povolené prechody sa uložia a spustia AppointmentStatusChanged; nepovolené vyhodia InvalidStatusTransitionException; prechod na aktuálny stav potichu nič neurobí:
use RoundlyConsulting\Appointments\Enums\Status;
use RoundlyConsulting\Appointments\Facades\Appointments;
Appointments::for($appointment)->confirm(); // pending → confirmed
Appointments::for($appointment)->cancel(); // pending/confirmed → cancelled
Appointments::for($appointment)->complete(); // confirmed → completed
Appointments::for($appointment)->decline(); // pending → declined
Appointments::for($appointment)->markNoShow(); // confirmed → no_show
Appointments::for($appointment)->transition(Status::Confirmed); // the generic form
// the same shortcuts on the model — they go through the facade's manager too
$appointment->confirm();
$appointment->transitionTo(Status::Confirmed);Povolené prechody
| Stav | Hodnota | Farba | Môže prejsť na |
|---|---|---|---|
Status::Pending | pending | amber | confirmed, declined, cancelled |
Status::Confirmed | confirmed | blue | completed, cancelled, no_show |
Status::Cancelled | cancelled | gray | — (konečný) |
Status::Completed | completed | green | — (konečný) |
Status::Declined | declined | red | — (konečný) |
Status::NoShow | no_show | orange | — (konečný) |
Skratky handlu aj metódy confirm(), cancel(), complete(), decline(), markNoShow() a transitionTo() na modeli končia v Appointments::for($appointment)->transition() na manažéri, ktoré spustí TransitionAppointmentAction — Appointments::fake() ich preto zaznamená, nech ich voláte odkiaľkoľvek.
Skúmanie automatu
Opýtajte sa enumu, čo je možné — hodí sa to na zobrazenie len tých tlačidiel, ktoré dávajú zmysel:
use RoundlyConsulting\Appointments\Enums\Status;
$appointment->status; // Status enum (cast)
$appointment->status->transitions(); // e.g. [Status::Completed, Status::Cancelled, Status::NoShow]
$appointment->status->canTransitionTo(Status::Pending); // false
$appointment->status->isFinal(); // true for cancelled, completed, declined, no_show
Status::default(); // Status::PendingOšetrenie nepovolených prechodov
use RoundlyConsulting\Appointments\Exceptions\InvalidStatusTransitionException;
try {
$appointment->complete(); // still pending
} catch (InvalidStatusTransitionException $e) {
$e->from; // Status::Pending
$e->to; // Status::Completed
$e->getMessage(); // Cannot transition appointment status from "pending" to "completed".
}Popisy, farby a možnosti
Status, ParticipantRole a Frequency majú trait Helpers z enums-for-laravel, takže sú pripravené pre UI aj validáciu. color() má len Status:
use RoundlyConsulting\Appointments\Enums\Status;
$appointment->status->label(); // "Confirmed" (from the enums Helpers trait)
$appointment->status->color(); // a colour token for UI badges, e.g. "blue"
Status::values(); // Collection: 'pending', 'confirmed', …
Status::labels(); // Collection: "Pending", "Confirmed", …
Status::options(); // value/label/name option DTOs for a <select>
Status::validationRule(); // "in:pending,confirmed,cancelled,completed,declined,no_show"label() prepustí hodnotu v tvare nadpisu cez __() v Laraveli — Pending, Confirmed, No Show — popisy preto prekladáte JSON prekladovým súborom, napríklad lang/sk.json:
{
"Pending": "Čaká na potvrdenie",
"Confirmed": "Potvrdený",
"No Show": "Neprítomnosť"
}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.