Настройка правил бронирования

Сервер 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:
  ...
}]

Порядок настройки правил бронирования

  1. Скачайте шаблон файла resource-rules-default.json.
  2. В файле resource-rules-default.json создайте разделы настроек всех нужных правил бронирования. В каждом разделе укажите нужные значения для соответствующих типов ресурсов и правил в строках:
  3. Строка
    Возможные значения
    Описание
    "venueType"
    Тип ресурсов, для которого действует правило
    “meeting-room”
    Переговорные комнаты
    “desk”
    Рабочие места
    “parking”
    Парковочные места
    “nappod”
    Капсулы сна и другие ресурсы из категории Здоровье и отдых
    "pipeline"
    Массив с правилом, копируется из инструкции примером правила бронирования
    "name"
    Имя правила (указывается произвольно)
    "alreadyBooked”
    "NextBookingTimeout”
    "NappodTimeout”
    "anotherParkingBooked”
    "alreadyDeskBooked”
    "alreadyMeetingRoomBooked”
    "NappodLimitPerDay”
  1. После сохранения изменений загрузите обновленный файл resource-rules-default.json на сервер BOOCO.
  2. Пример с настройкой ограничения на создание нескольких бронирований капсул сна подряд:

    [{
      "_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": "Капсулу сна нельзя бронировать подряд"
        }
      }
    ]
Примеры правил бронированияЗагрузка файла resource-rules-default.json на сервер BOOCO