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

Ž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

StavHodnotaFarbaMôže prejsť na
Status::Pendingpendingamberconfirmed, declined, cancelled
Status::Confirmedconfirmedbluecompleted, cancelled, no_show
Status::Cancelledcancelledgray— (konečný)
Status::Completedcompletedgreen— (konečný)
Status::Declineddeclinedred— (konečný)
Status::NoShowno_showorange— (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::Pending

Oš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 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.