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