Если вы сохраняете каждый запрос доступа в таблице с полями start_time и end_time, то вы можете использовать функцию базы данных BETWEEN, чтобы определить, будет ли определенный доступ перекрываться с тем, который уже есть в базе данных.
КакНапример, предположим, что кто-то выполнил запрос на доступ в понедельник с 9:00 до 12:00.
Затем приходит кто-то другой и пытается сделать запрос на доступ в понедельник с 11:00 до 15:00.Чтобы определить, не вступит ли это в конфликт с чем-то другим, вам необходимо найти следующие возможные условия:
- start_time <понедельник 11:00 AM && end_time> понедельник 11:00 AM
- start_time МЕЖДУ Понедельником 11:00 AM & Понедельником 3:00 PM
- start_time == Понедельник 11:00 AM ||end_time == Понедельник, 3:00 PM
Они могут делать ставки, переведенные в SQL-запрос, который избавит от необходимости загружать и перебирать записи в приложении.В качестве бонуса вы можете использовать транзакции для защиты от условий гонки.