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

Open source

Opening Hours for Laravel

Inštalácia
composer require roundly-consulting/opening-hours-for-laravel
Vyžaduje: PHP ^8.4 · Laravel ^12.0|^13.0

Prehľad

Natívny engine otváracích hodín pre Laravel. Priraďte akémukoľvek Eloquent modelu jeden alebo viac pomenovaných kalendárov — týždenné hodiny s obedňajšou prestávkou aj rozsahmi cez polnoc, sezónne rozvrhy, jednorazové a každoročné výnimky, sviatky viazané na Veľkú noc — a cez jednu fasádu OpeningHours sa pýtajte na čokoľvek: je otvorené teraz, kedy sa otvára, aké sú hodiny v daný deň, zoskupený týždeň, dáta pre schema.org. Odpovedá správne aj pri zmene času podľa jedného explicitného pravidla a z tých istých hodín vytvorí kontroly dostupnosti a rezervovateľné sloty napájané z ľubovoľného zdroja obsadenosti. Licencia MIT, postavené len na Laraveli a vlastných základných balíkoch Roundly — bez závislostí tretích strán.

Čo získate

Týždenné hodiny z praxe

Viac rozsahov za deň, rozsahy cez polnoc (22:00-02:00), nonstop aj zatvorené dni — a viac pomenovaných kalendárov na vlastníka.

Sezóny, výnimky a sviatky

Sezónne rozvrhy s prioritami, výnimky pre dátumy, obdobia a každoročné sviatky zapisované bezpečne pri súbežnosti a pohyblivé sviatky viazané na Veľkú noc či vlastné pravidlo.

Fasáda, DI alebo akcie

Jedna fasáda OpeningHours, injektovateľný manažér alebo jednoúčelové akcie — a OpeningHours::fake() zaznamená každý zápis bez zásahu do databázy.

Kompletné dotazovacie API

isOpenAt, nextOpen, nextClose, forDate, forWeek, dĺžka otvorenia a štruktúrované dáta pre schema.org.

Jedno explicitné pravidlo pre DST

Každá hranica sa vyhodnotí rovnako v každom pásme — overené brute-force orákulom na skutočných zmenách času.

Dostupnosť a sloty

Kapacita, časové rezervy, minimálny predstih a horizont, napájané z ľubovoľného zdroja obsadenosti — bez rezervačného balíka.

Pripravené do produkcie

Validačné pravidlo, fluentný builder s optimistickou súbežnosťou, cache podľa revízie, udalosti, API zdroje a voliteľné SQL scopy.

Dokumentácia

Inštalácia

Inštalácia cez Composer, publikovanie a spustenie šiestich migrácií a voliteľne publikovanie konfigurácie a prekladov en/sk.

Konfigurácia

Každý konfiguračný kľúč s predvolenou hodnotou a env premennou — časové pásma, hľadanie, limity, cache, API, čistenie a materializácia.

Vlastníci a kalendáre

Z akéhokoľvek Eloquent modelu urobíte vlastníka traitom HasOpeningHours, pridáte mu viac pomenovaných kalendárov a nastavíte časové pásmo.

Fasáda OpeningHours

Každý zápis aj čítanie cez jednu fasádu — sync, edit, exceptions(), delete(force:), refresh, validate — a dotazovací objekt, ktorý vracia.

DI a akcie

Namiesto fasády injektujte OpeningHoursManager alebo zavolajte akciu priamo — mapa fasáda → akcia a čo fake vidí a čo nie.

Definovanie otváracích hodín

Uložte hodiny z poľa — týždenné rozsahy, sezónne rozvrhy a výnimky — v rovnakom kanonickom tvare, aký prijíma validačné pravidlo.

Fluentný builder a súbežnosť

Upravujte hodiny cez CalendarBuilder a ScheduleBuilder, chráňte súbežné úpravy revíziami a skladajte kalendáre v pamäti.

Dotazovanie otváracích hodín

Zistite, či má vlastník v danom okamihu otvorené, nájdite najbližšie otvorenie či zatvorenie a vráťte odpovede v ľubovoľnom pásme.

Dni, týždne a štruktúrované dáta

Načítajte hodiny pre ľubovoľný dátum či deň, vykreslite zoskupené týždne s enumom Weekday a prekladmi a publikujte hodiny pre schema.org.

Intervaly a trvanie

Vypíšte obdobia otvorenia medzi dvoma okamihmi, overte celé intervaly a zmerajte čas otvorenia či zatvorenia v reálnych sekundách.

Výnimky a sviatky

Zatvorte alebo zmeňte hodiny pre dátumy, obdobia a každoročné sviatky, pridajte sviatky viazané na Veľkú noc aj vlastné pravidlá.

Validácia a HTTP vstup

Validujte vstup otváracích hodín pravidlom ValidOpeningHours, dostaňte každý problém pod jeho vnoreným kľúčom a validujte aj v kóde.

Dostupnosť a sloty

Overte, či sa dá termín rezervovať, a vypíšte voľné sloty — s kapacitou, časovými rezervami, predstihom a horizontom z akéhokoľvek zdroja.

Poskytovatelia obsadenosti

Napájajte dostupnosť z Eloquent dotazov, polí, closures alebo vlastného poskytovateľa — bez väzby na akýkoľvek rezervačný balík.

API zdroje

Hotové JSON resources pre aktuálny stav, upraviteľné definície, hodiny dňa a sloty — routy a controllery ostávajú na vás.

Cache a eager loading

Cache definícií podľa revízie bez potreby invalidácie, memo v rámci requestu a zoznamy bez N+1 dotazov.

Udalosti

Reagujte na zmenu alebo odstránenie hodín vlastníka — obe udalosti sa odosielajú po commite so skalárnymi dátami bezpečnými pre fronty.

SQL scopy

Filtrujte vlastníkov, ktorí majú otvorené teraz alebo počas celého intervalu, priamo v SQL cez voliteľné materializované intervaly.

Artisan príkazy

Pozrite si hodiny ľubovoľného vlastníka v termináli, premažte staré výnimky a zmazané riadky a obnovte materializované intervaly.

Import týždenných polí

Importujte hodiny uložené v rozšírenom formáte polí podľa dní, s popismi a výnimkami — ako import dát, nie prepis kódu.

Časové pásma a DST

Ako sa určuje časové pásmo kalendára, ako vrátiť odpovede v ľubovoľnom pásme a jedno explicitné pravidlo pre zmenu času.

Rozširovanie

Nahraďte modely vlastnými podtriedami, napojte časové pásmo a dynamické výnimky vlastníka a pripojte vlastných poskytovateľov.

Ošetrenie chýb

Všetky výnimky balíka dedia z jednej základnej triedy — zachyťte ich naraz alebo ošetrite zastarané zápisy a príliš veľké dotazy zvlášť.

Bezpečnosť

Čo balík stráži za vás — cudzie id, skryté meta, viazané stĺpce, limity veľkosti — a čo ostáva vo vašej zodpovednosti.

Testovanie

Zaznamenajte každý zápis cez OpeningHours::fake() a overte sync, výnimky, mazanie aj refresh — alebo zmrazte čas a testujte nad skutočnými riadkami.

Požiadavky

PHP 8.4+, Laravel 12 alebo 13 a SQLite, PostgreSQL či MySQL — bez PHP rozšírení a bez knižníc tretích strán.

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.