Как мне найти в промежутке с учетом обеда не занятое время?
Здравствуйте.
В базе в одной колонке хранится рабоче время и обед в JSON
У меня есть мастер у которого есть рабочий промежуток времени и обед либо несколько перерывов
Есть услуги разные, к примеру 1 час 15 минут, 30 минут и т.д
Услуги в базе хранятся по 1 строчке в формате datetime
Вопрос в том, как проверить интервал времени на PHP чтобы записать новую услугу с учетом того чтобы не наложиться на другую.
Реализация именно на PHP, так как систему уже не переделать
Денис, и в чем проблема? В конструктор вводите не строковую дату, а объект DateTime. В нем время уже есть. У вас же есть информация, когда перерыв, когда обед и.т.д? Вот из этих интервалов и стройте периоды, а потом проверяйте.
Денис, вы невнимательно читаете. Мой класс - промежуток времени. Вы создаете все промежутки, которые у вас есть, а потом сравниваете с целевым. Если хоть один пересекается - значит промежуток не подходит.
foreach($scheduledIntervals as $schedule){
if($source->hasOverlap($schedule)) return false;
}
return true;
Тут $scheduledIntervals - массив таких же DateInterval, с данными о временах, когда услуга не может быть оказана, а $source - Временной интервал, который интересует клиента.
У меня был подобный проект с бронью столов в ресторане, но там еще высчитывалась средняя нагрузка в определенное время и тд.
кратко:
1) Используйте промежутки времени. Если услуга 15 минут, то записывайте тип услуги, время начало и время конца.для последующих расчетов это будет плюс.
2) Далее проверяете промежуток, входит ли он в какой либо из уже существующих.