Сервер BOOCO Meteor (v 1.x) / Настройка системы
Введение
Правила бронирования позволяют ограничить бронирование ресурсов. Например, правила проверяют:
- наличие конфликта с другими бронированиями ресурса;
- наличие у пользователя бронирований других ресурсов;
- частоту бронирований ресурса и др.
Правила бронирования настраиваются в файле resource-rules-default.json
, который загружается на сервер BOOCO в Инструментах администратора.
Исходные требования
Для загрузки файла resource-rules-default.json
на сервер BOOCO у пользователя admin
должно быть право create:any
для ресурса collection
.
Типовая структура файла resource-rules-default.json
[{
# Раздел настроек правила 1:
"_id": идентификатор правила (создается автоматически при импорте правил),
"name": #имя правила (указывается произвольно),
"type": #тип правила: "pipeline",
"collection": #название коллекции ресурсов, для которых действует правило, по умолчанию — "bookings" (бронирования),
"pipeline": #массив с правилом, копируется из инструкции с нужным примером правила бронирования,
"venueType": #тип ресурсов, для которых действует правило
},
{
# Раздел настроек правила 2:
"_id": идентификатор правила (создается автоматически при импорте правил),
"name": #имя правила (указывается произвольно),
"type": #тип правила: "pipeline",
"collection": #название коллекции ресурсов, для которых действует правило, по умолчанию — "bookings" (бронирования),
"pipeline": #массив с правилом, копируется из инструкции с нужным примером правила бронирования,
"venueType": #тип ресурсов, для которых действует правило
"disabled": #параметр, который разрешает или запрещает использование правила. Если true — правило отключено,
},
{
# Раздел настроек правила n:
...
}]
Порядок настройки правил бронирования
- Скачайте шаблон файла
resource-rules-default.json
. - В файле
resource-rules-default.json
создайте разделы настроек всех нужных правил бронирования. В каждом разделе укажите нужные значения для соответствующих типов ресурсов и правил в строках:
Строка | Возможные значения | Описание |
"venueType" | Тип ресурсов, для которого действует правило | |
“meeting-room” | Переговорные комнаты | |
“desk” | Рабочие места | |
“parking” | Парковочные места | |
“nappod” | Капсулы сна и другие ресурсы из категории Здоровье и отдых | |
"pipeline" | Массив с правилом, копируется из инструкции примером правила бронирования | |
"name" | Имя правила (указывается произвольно) | |
"alreadyBooked” | ||
"NextBookingTimeout” | Имя правила Проверка на частоту бронирования ресурса | |
"NappodTimeout” | Имя правила Ограничение на создание нескольких бронирований подряд (для капсул сна) | |
"anotherParkingBooked” | Имя правила Проверка наличия у пользователя бронирований других ресурсов (для парковочных мест) | |
"alreadyDeskBooked” | Имя правила Проверка на наличие конфликта с другим бронированием того же ресурса (для рабочих мест) | |
"alreadyMeetingRoomBooked” | Имя правила Проверка на наличие конфликта с другим бронированием того же ресурса (для переговорных комнат) | |
"NappodLimitPerDay” | Имя правила Ограничение на количество бронирований в день (для капсул сна) |
- После сохранения изменений загрузите обновленный файл
resource-rules-default.json
на сервер BOOCO.
Пример с настройкой ограничения на создание нескольких бронирований капсул сна подряд:
[{
"_id": "635ea10e4a9e0fbd013a5fc9",
"name": "NappodTimeout",
"type": "pipeline",
"collection": "bookings",
"venueType": "nappod",
"pipeline": "[
{
"$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": "Капсулу сна нельзя бронировать подряд"
}
}
]