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

Fasáda Appointments

Všetko prechádza cez RoundlyConsulting\Appointments\Facades\Appointments. Jej koreňom je AppointmentManager, singleton v kontajneri, ktorý môžete aj injektovať (pozrite DI a akcie). schedule(), create() a createRecurring() zapisujú nové rezervácie, for($appointment) obmedzí každú zmenu na jednu rezerváciu a metódy na čítanie zodpovedajú otázky dostupnosti a exportu bez akéhokoľvek zápisu:

use Carbon\CarbonImmutable;
use RoundlyConsulting\Appointments\DataTransferObjects\RecurrenceData;
use RoundlyConsulting\Appointments\Enums\Frequency;
use RoundlyConsulting\Appointments\Enums\Status;
use RoundlyConsulting\Appointments\Facades\Appointments;

// Create
$appointment = Appointments::schedule('Consultation')->startingAt('2026-07-01 09:00')->lasting(45)->create();
$appointment = Appointments::create($appointmentData);             // from an AppointmentData
$series = Appointments::createRecurring($appointmentData, $rule);  // Collection<int, Appointment>

// One booking
$booking = Appointments::for($appointment);                        // AppointmentHandle
$booking->reschedule(CarbonImmutable::parse('2026-07-02 10:00'));  // keeps the duration
$booking->confirm();                                               // or cancel(), complete(), decline(), markNoShow()
$booking->transition(Status::Completed);
$booking->participants()->add($user);                              // AppointmentParticipants
$booking->ics();                                                   // one-event calendar

// Reads — nothing is written
Appointments::isAvailable($doctor, $start, $end);                  // bool
Appointments::conflicts($doctor, $start, $end);                    // Collection<int, Appointment>
Appointments::ics($user->appointments()->upcoming()->get());       // one VCALENDAR, many VEVENTs
Appointments::occurrences($start, new RecurrenceData(Frequency::Weekly, count: 4)); // list<CarbonImmutable>

// Tests
$fake = Appointments::fake();                                      // AppointmentsFake

Prehľad metód

MetódaVracia
schedule(string $name)AppointmentBuilder — zreťazte metódy buildera a zavolajte create() alebo createRecurring().
create(AppointmentData $data)Appointment.
createRecurring(AppointmentData $data, ?RecurrenceData $rule = null)Collection<int, Appointment> — bez pravidla použije recurrence z DTO; ak chýba aj to, kolekciu s jedným termínom.
for(Appointment $appointment)AppointmentHandle — reschedule(), transition(), confirm(), cancel(), complete(), decline(), markNoShow(), participants(), ics().
for($appointment)->participants()AppointmentParticipants — add(), remove(), has(), all().
conflicts(Model $participant, $start, $end, ?Appointment $ignore = null)Collection<int, Appointment> — prekrývajúce sa rezervácie účastníka.
isAvailable(Model $participant, $start, $end, ?Appointment $ignore = null)bool — voľno počas celého okna.
ics(iterable $appointments)string — jeden VCALENDAR s jedným VEVENT na termín.
occurrences(CarbonInterface $start, RecurrenceData $rule)list<CarbonImmutable> — začiatky podľa pravidla, bez zápisu.
fake()AppointmentsFake — pozrite Testovanie.

Handle for()

Appointments::for($appointment) vráti AppointmentHandle naviazaný na danú rezerváciu. reschedule() ponechá trvanie, ak nezadáte nové, a spustí AppointmentRescheduled; transition() a skratky ako confirm() prechádzajú stráženým stavovým automatom; participants() vráti AppointmentParticipants obmedzené na túto rezerváciu s metódami add(), remove(), has() a all(); ics() vykreslí rezerváciu ako kalendár s jednou udalosťou.

Skratky na modeli

Metódy confirm(), cancel(), complete(), decline(), markNoShow(), transitionTo() a toIcs() na modeli Appointment sú len skratkou k tomu istému handlu — volajú for($this) na manažéri, takže ich vidí aj prepísanie v hostiteľskej aplikácii, aj Appointments::fake().

  • Každý zápis — z fasády, injektovaného manažéra, buildera, handlu či skratky na modeli — prejde jednou metódou manažéra, ktorá si akciu získa z kontajnera, takže akcia, ktorú previažete, platí všade.
  • Každý zápis rezervácie prebehne v jednej transakcii a eventy balíka sa spustia až po jej potvrdení: odmietnutá či zlyhaná rezervácia nezanechá riadok ani nespustí event.
  • Builder, handle aj prístup k účastníkom dostanete hotové — začnite od schedule() a for(), nikdy nie cez new.

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.