Пакет Laravel Zap — це гнучка система управління розкладом з глибокою інтеграцією в Laravel. За допомогою Zap ви можете створювати календарні розклади для Eloquent моделей, таких як події, призначення, повторювані заходи та інше:
use Zap\Facades\Zap;
// Щотижнева зустріч команди
$meeting = Zap::for($user)
->named('Командний стендап')
->from('2025-01-01')
->to('2025-12-31')
->addPeriod('09:00', '09:30')
->weekly(['monday', 'wednesday', 'friday'])
->save();
Під час роботи з управлінням розкладом необхідно виконувати запити для перевірки доступності моделей, знаходити наступні вільні часові слоти, усувати конфлікти в розкладі тощо:
// Перевірка доступності
$available = $user->isAvailableAt('2025-03-15', '14:00', '16:00');
// Отримання вільних слотів
$slots = $user->getAvailableSlots(
date: '2025-03-15',
dayStart: '09:00',
dayEnd: '17:00',
slotDuration: 60
);
// Перевірка на конфлікти
$conflicts = Zap::findConflicts($schedule);
// Отримання розкладів на дату
$todaySchedules = $user->schedulesForDate(today());
Цей пакет ідеально підходить для систем бронювання призначень, управління кімнатами для зустрічей, управління змінами працівників та інших додатків на основі розкладу.
# Основні можливості
- Інтеграція з Eloquent - Користувач має багато розкладів з періодичним плануванням
- Двигун бізнес-правил - Налаштовувана валідація з інтеграцією Laravel
- Часові операції - Маніпуляція датами і часом на основі Carbon з підтримкою часових поясів
- Розумне виявлення конфліктів - Автоматична перевірка накладок з можливістю налаштування буферів
- Повторювані розклади - Підтримка щоденних, щотижневих, щомісячних та індивідуальних патернів
- Управління доступністю - Інтелектуальна генерація часових слотів та вирішення конфліктів
- Laravel Native - Фасади, сервіси, події та налаштування
- Досвід розробника - Легкий API, всебічне тестування та зрозуміла документація
👨💻 Ознайомтеся з проєктом на GitHub: ludoguenet/laravel-zap