---
title: "Typované DTO — Appointments for Laravel | Roundly"
description: "AppointmentData, ParticipantData a RecurrenceData — typované DTO za create(), createRecurring(), fluentným builderom aj akciami."
url: https://roundly-consulting.com/sk/open-source/navody/appointments-for-laravel/dto-a-akcie
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)

# Typované DTO

Fluentný builder je najkratšia cesta k rezervácii, no každý zápis pod ním prijíma typované DTO. Odovzdávajte ich sami z importov, API endpointov či úloh vo fronte — cez fasádu, injektovaný AppointmentManager alebo akciu (pozrite DI a akcie).

## AppointmentData

create(), createRecurring() aj CreateAppointmentAction prijímajú AppointmentData — fluentný builder interne vytvára presne toto DTO:

```php
use Carbon\CarbonImmutable;
use RoundlyConsulting\Appointments\DataTransferObjects\AppointmentData;
use RoundlyConsulting\Appointments\DataTransferObjects\ParticipantData;
use RoundlyConsulting\Appointments\Enums\ParticipantRole;
use RoundlyConsulting\Appointments\Facades\Appointments;

$appointment = Appointments::create(new AppointmentData(
    name: 'Project kickoff',
    startsAt: CarbonImmutable::parse('2026-07-01 17:30'),
    durationMinutes: 90,
    participants: [
        new ParticipantData($host, ParticipantRole::Organiser),
        new ParticipantData($guest),
    ],
));
```

| Pole | Typ | Predvolené | Význam |
| --- | --- | --- | --- |
| `name` | string | — | Názov termínu. |
| `startsAt` | CarbonImmutable | — | Začiatok; pri uložení sa prevedie do UTC. |
| `durationMinutes` | ?int | null | Trvanie; null použije default\_duration\_minutes. Hodnota pod jedna vyhodí InvalidScheduleException. |
| `timezone` | ?string | null | Pásmo uložené k termínu; null uloží appointments.timezone, inak app.timezone. |
| `description` | ?string | null | Popis. |
| `meta` | ?array | null | Ľubovoľné meta údaje. |
| `status` | Status | Status::Pending | Počiatočný stav. |
| `participants` | zoznam ParticipantData | \[\] | Účastníci na pripojenie. |
| `recurrence` | ?RecurrenceData | null | Pravidlo, ktoré createRecurring() použije, ak žiadne neodovzdáte; create() ho ignoruje. |
| `preventConflicts` | bool | false | Ochrana pred dvojitou rezerváciou pre toto volanie. |
| `location` | ?string | null | Názov miesta konania. |
| `coordinates` | ?Coordinates | null | Súradnice miesta konania. |
| `contacts` | zoznam ContactData | \[\] | Kontakty rezervácie na pridanie. |
| `approval` | ?AppointmentApprovalData | null | Žiadosť o schválenie na otvorenie (schvaľovatelia, pravidlo, kvórum, stupne, workflow). |
| `recurrenceGroup` | ?string | null | Spája výskyty jednej série; nastavuje ho createRecurring(). |

## ParticipantData

Jedno na účastníka: new ParticipantData(Model $participant, ?ParticipantRole $role = null, ?array $meta = null). Účastníkom môže byť akýkoľvek Eloquent model. Prijíma ho aj AttachParticipantAction.

## RecurrenceData

createRecurring() a ScheduleRecurringAppointmentAction prijímajú pravidlo RecurrenceData — jeho polia nájdete v časti Opakované termíny. create() AppointmentData::$recurrence ignoruje; createRecurring() ho použije, ak žiadne pravidlo neodovzdáte.

## Validácia pri vytvorení

Obe DTO odmietnu hodnoty, ktoré nemôžu opísať rezerváciu, ešte pred akýmkoľvek zápisom: AppointmentData s durationMinutes pod jedna vyhodí InvalidScheduleException a RecurrenceData s intervalom či počtom pod jedna alebo s dňom v týždni mimo 1–7 vyhodí InvalidRecurrenceException.

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