Сервер BOOCO Meteor (v 1.x) / Примеры правил бронирования
Проверка на наличие конфликта с другим бронированием того же ресурса
Проверка наличия у пользователя бронирований других ресурсов
Проверка на бронирование ресурса другим пользователем
Проверка на частоту бронирования ресурса
◼ Ограничение на создание нескольких бронирований подряд
Загрузка файла resource-rules-default.json на сервер BOOCO
Описание
По умолчанию между бронированиями, созданными одним и тем же пользователем, должно пройти не менее 20 минут (1 200 000 мс). При необходимости значение, используемое по умолчанию, можно изменить.
Принцип работы
- Создается переменная
diff
, в которой хранится значение, которое получается путем вычитания из времени начала нового бронирования (значение переменной$newEvent.start
) времени конца предыдущего бронирования (значение переменной$end
). Результатом вычислений является период времени (в мс) от начала нового бронирования до завершения предыдущего бронирования. - Система выполняет поиск всех бронирований выбранного ресурса, созданных данным пользователем (
{ "$expr": { "$eq": ["$organizer", "$newEvent.organizer"] } }
) ({ "$expr": { "$eq": ["$venueId", "$newEvent.venueId"] } }
), у которых значение переменнойdiff
больше нуля и меньше 20 минут (1 200 000 мс). - Если система находит такие бронирования, то отображается сообщение о конфликте.
Пример использования
[
{
"$addFields": {
"diff": { "$subtract": [{ "$toDate": "$newEvent.start" }, {"$toDate":
"$end" }] }
}
},
{
"$match": {
"$and": [
{ "$expr": { "$eq": ["$venueId", "$newEvent.venueId"] } },
{ "$expr": { "$eq": ["$organizer", "$newEvent.organizer"] } },
{ "$and": [{ "diff": { "$lt": 1200000 } }, { "diff": { "$gte": 0 }
}] }
]
}
},
{
"$addFields": {
"message": "Капсулу сна нельзя бронировать подряд"
}
}
]