---
title: "Eventy a výnimky — Appointments for Laravel | Roundly"
description: "Sedem eventov termínov a účastníkov, ich dáta a kedy sa spúšťajú, plus každá výnimka, ktorú balík vyhadzuje."
url: https://roundly-consulting.com/sk/open-source/navody/appointments-for-laravel/eventy
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)

# Eventy a výnimky

Balík spustí event pri každej zmene, takže potvrdenia, synchronizácia kalendára či dashboardy zostanú mimo vášho plánovacieho kódu. Všetky sú v RoundlyConsulting\\Appointments\\Events:

| Event | Dáta | Spustí sa, keď |
| --- | --- | --- |
| `AppointmentCreated` | $appointment | sa vloží riadok termínu. |
| `AppointmentUpdated` | $appointment | sa termín uloží so zmenami — vrátane presunov a zmien stavu. |
| `AppointmentRescheduled` | $appointment, $previousStartsAt | reschedule() presunie termín. |
| `AppointmentStatusChanged` | $appointment, $from, $to | nastane prechod stavu — priamo alebo cez synchronizáciu schválenia. |
| `ParticipantCreated` | $participant | sa účastník pridá prvýkrát. |
| `ParticipantUpdated` | $participant | sa riadok účastníka uloží so zmenami — alebo sa odobraný účastník pridá znova a jeho riadok sa obnoví. |
| `ParticipantDeleted` | $participant | sa účastník odoberie (soft delete) — jeden event na riadok. |

```php
use Illuminate\Support\Facades\Event;
use RoundlyConsulting\Appointments\Enums\Status;
use RoundlyConsulting\Appointments\Events\AppointmentStatusChanged;

Event::listen(function (AppointmentStatusChanged $event): void {
    if ($event->to === Status::Confirmed) {
        foreach ($event->appointment->participants as $participant) {
            // notify $participant->participant that the booking is confirmed
        }
    }
});
```

## Poznámky k načasovaniu

- Každý event balíka implementuje ShouldDispatchAfterCommit: v databázovej transakcii sa spustí až po jej potvrdení a pri zápise, ktorý sa vráti späť, sa nespustí vôbec.
- Rezervácia sa zapisuje v jednej transakcii, takže AppointmentCreated sa spustí až po uložení jej účastníkov, kontaktov a žiadosti o schválenie — a odmietnutá či zlyhaná rezervácia nespustí nič.
- Opakovaná séria je tiež jedna transakcia: jej eventy sa spustia po potvrdení celej série a séria, ktorá sa vráti späť, nespustí žiadny.
- reschedule() aj prechody stavu model ukladajú, takže popri AppointmentRescheduled či AppointmentStatusChanged sa spustí aj AppointmentUpdated.
- Stav nastavený pri vytvorení cez withStatus() AppointmentStatusChanged nespustí, rovnako ako prechod na aktuálny stav.

## Výnimky

| Výnimka | Kedy nastane | Nesie |
| --- | --- | --- |
| `InvalidStatusTransitionException` | Prechod stavu, ktorý stavový automat nepovoľuje. | $from, $to |
| `SchedulingConflictException` | Vytvorenie, presun alebo pridanie účastníka sa pri zapnutej ochrane prekrýva s rezerváciou účastníka. | $conflicts — Collection termínov |
| `DuplicateParticipantException` | Ten istý model je pri novom termíne uvedený dvakrát alebo participants()->add() dostane model, ktorý sa už zúčastňuje. | — |
| `ParticipantNotFoundException` | participants()->remove() dostane model, ktorý sa nezúčastňuje, alebo riadok účastníka iného termínu. | — |
| `InvalidScheduleException` | Trvanie kratšie ako jedna minúta alebo koniec, ktorý nie je neskôr ako začiatok — z buildera, AppointmentData či reschedule(). Vyhodí sa pred akýmkoľvek zápisom. | — |
| `InvalidRecurrenceException` | RecurrenceData s intervalom či počtom pod jedna alebo s dňom v týždni mimo 1–7. | — |
| `CannotReviewAppointmentException` | review() pre neovereného autora pri zapnutom reviews.require\_verified\_attendance. | — |
| `AppointmentsException` | Abstraktná základná trieda všetkých výnimiek vyššie. | — |

Všetky sú v RoundlyConsulting\\Appointments\\Exceptions a rozširujú AppointmentsException, takže jeden catch pokryje celý balík.

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