Для системы событий мне нужно проверить, достаточно ли ресурсов для события. События имеют начальную и конечную временные метки и нуждаются в ряде ресурсов (для простоты будем предполагать, что существует только 1 тип ресурса). Когда новое событие зарегистрировано, должна быть проверка, если это возможно. Все события являются основанными на доктринах php-объектами, временные метки не должны быть более конкретными, чем минуты.
У меня проблемы с примером, подобным следующему:
- 1 ресурс необходим с 12:00 до 13:00
- 1 ресурс необходим с 13:00 до 14:00
- создается новое событие, для которого требуется 1 ресурс с 12:00 до 14:00
Давайте предположим, что у нас всего 2 ресурса, тогда это должно быть возможно. В настоящее время я выбираю все события, которые перекрываются с новым событием (т.е. с 12:00 до 14:00), и беру сумму всех ресурсов, необходимых для этих событий. Это будет означать, что новое событие невозможно.
Как я могу проверить (эффективно), возможно ли новое событие? Либо используя только запрос доктрины, либо сделав базовый выбор, используя запрос доктрины, а затем выполните фильтрацию с помощью php. Единственное решение, которое я до сих пор придумал: выбрать все события с 12:00 до 14:00 и проверять каждую минуту (например, 120 итераций), если ресурс перебронирован.