---
title: "Životný cyklus stavu — Appointments for Laravel | Roundly"
description: "Strážený stavový automat — prechody, pomocné metódy, popisy, farby a výnimka InvalidStatusTransitionException."
url: https://roundly-consulting.com/sk/open-source/navody/appointments-for-laravel/zivotny-cyklus-stavu
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Appointments for Laravel](https://roundly-consulting.com/sk/open-source/navody/appointments-for-laravel.md)

# Ž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í:

```php
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:

```php
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

```php
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:

```php
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:

```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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/appointments-for-laravel.md)
