Open source
Appointments for Laravel
composer require roundly-consulting/appointments-for-laravelPrehľad
Nástroj na plánovanie termínov pre Laravel. Vytvárajte termíny s trvaním a časovým pásmom, pripájajte ako účastníka akýkoľvek Eloquent model, blokujte dvojité rezervácie, posúvajte rezervácie cez strážený životný cyklus stavu, generujte opakované série a exportujte štandardné kalendárové súbory .ics. Všetko pokryje jedna fasáda Appointments a rovnaké API môžete injektovať ako AppointmentManager. Stavia na vlastných provider balíkoch Roundly pre polohu miesta konania, kontakty hostí, schvaľovanie rezervácií a hodnotenia po návšteve — licencia MIT, bez závislostí tretích strán okrem Laravelu.
Čo získate
Fasáda, DI alebo akcie
Rezervujte cez Appointments::schedule()->startingAt()->lasting()->create(), injektujte AppointmentManager alebo spúšťajte akcie s typovanými DTO.
Účastníkom môže byť akýkoľvek model
Používatelia, zákazníci, miestnosti či vozidlá sa pripájajú cez jednu polymorfnú tabuľku — s rolou a vlastnými meta údajmi.
Strážený životný cyklus stavu
Čaká → potvrdený → dokončený, plus zrušený, odmietnutý a neprítomnosť. Nepovolené prechody vyhodia výnimku, každá zmena spustí event.
Ochrana pred dvojitou rezerváciou
Zapnite ju pre jedno volanie alebo globálne: prekryv u ktoréhokoľvek účastníka vyhodí výnimku — vďaka zámkom riadkov aj pri dvoch súbežných rezerváciách.
Opakované série
Denné, týždenné či mesačné pravidlá s intervalom, počtom, koncovým dátumom a dňami v týždni — vytvorené v jednej transakcii, všetko alebo nič.
Export do kalendára a zaznamenávajúci fake
Súbor .ics podľa RFC 5545 pre jeden termín aj celý feed; Appointments::fake() zaznamená každý zápis pre assertScheduled() a ďalšie asercie.
Schvaľovanie, hodnotenia a miesta
Schválenie rezervácie riadi jej stav, hodnotenia po návšteve sa overujú účasťou a miesta konania podporujú vyhľadávanie v okruhu.
Dokumentácia
Inštalácia
Inštalácia cez Composer, publikovanie migrácií balíka aj jeho provider balíkov a voliteľne konfigurácie.
Konfigurácia
Každý konfiguračný kľúč a jeho predvolená hodnota — modely, typ kľúča, tabuľky, pásmo, trvanie, konflikty, opakovania, hodnotenia a schvaľovanie.
Schéma a vlastné modely
Tabuľky termínov a účastníkov, kľúče účastníkov UUID/ULID a náhrada modelov Appointment a Participant vlastnými.
Fasáda Appointments
Prehľad fasády Appointments — builder schedule(), vytváranie z DTO, handle for() s participants(), dostupnosť, ICS feedy a náhľady opakovaní.
DI a akcie
Namiesto fasády injektujte AppointmentManager alebo spúšťajte šesť akcií priamo — plus úplná mapa metód fasády na akcie.
Typované DTO
AppointmentData, ParticipantData a RecurrenceData — typované DTO za create(), createRecurring(), fluentným builderom aj akciami.
Vytváranie termínov
Vytvárajte termíny fluentným builderom Appointments::schedule() alebo z typovaného DTO — reťaziteľné metódy, predvolené hodnoty a koncové volania.
Trvanie a časové pásma
Ako sa začiatok, koniec a trvanie odvodzujú navzájom, prečo sa časy ukladajú v UTC a ako čítať lokálny čas.
Účastníci
Pripojte akýkoľvek Eloquent model ako účastníka s rolou a meta údajmi, vypíšte jeho termíny cez HasAppointments a pridávajte či odoberajte ľudí neskôr.
Životný cyklus stavu
Strážený stavový automat — prechody, pomocné metódy, popisy, farby a výnimka InvalidStatusTransitionException.
Detekcia konfliktov
Blokujte dvojité rezervácie pre jedno volanie alebo globálne, preskúmajte kolidujúce termíny a overte dostupnosť cez Appointments::isAvailable().
Presúvanie termínov
Presuňte termín na nový začiatok, ponechajte alebo zmeňte trvanie, strážte konflikty a reagujte na AppointmentRescheduled.
Opakované termíny
Denné, týždenné či mesačné série s intervalom, počtom, koncovým dátumom a dňami v týždni — vytvorené atomicky a prepojené UUID skupiny.
Dotazovanie
Query scopes pre nadchádzajúce, minulé a prekrývajúce sa termíny aj termíny účastníka, plus filtre stavu a zoradenie.
Export do kalendára (ICS)
Exportujte jeden termín alebo celý rozvrh ako .ics podľa RFC 5545 — mapovanie stavov, escapovanie, riadky GEO, ORGANIZER a ATTENDEE.
Miesto konania
Priraďte termínu názov miesta a súradnice, merajte vzdialenosť a hľadajte termíny v okruhu.
Kontakty hostí
Ukladajte e-maily a telefónne čísla rezervácie priamo na termín a premeňte ich na riadky ORGANIZER a ATTENDEE v kalendári.
Schvaľovanie rezervácií
Vyžadujte schválenie pred potvrdením rezervácie — jednoduché, kvórové, viacstupňové či prednastavené workflow, ktoré riadia stav termínu.
Hodnotenia po návšteve
Zbierajte hodnotenia po návšteve overené pre skutočných účastníkov, pripojte vlastný resolver účasti a čítajte súhrny hodnotení.
Eventy a výnimky
Sedem eventov termínov a účastníkov, ich dáta a kedy sa spúšťajú, plus každá výnimka, ktorú balík vyhadzuje.
Testovanie
Zaznamenajte každý zápis rezervácií cez Appointments::fake() a jeho asercie, na zvyšok použite factory modelu a ukážkové testy v Peste.
Požiadavky
PHP 8.4+, Laravel 12 alebo 13 a šesť provider balíkov Roundly, ktoré Composer nainštaluje automaticky.
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.