Сервер 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 создайте разделы настроек всех нужных правил бронирования. В каждом разделе укажите нужные значения для соответствующих типов ресурсов и правил в строках:

    Строка Возможные значения Описание
    "venueType" Тип ресурсов, для которого действует правило
    “meeting-room” Переговорные комнаты
    “desk” Рабочие места
    “parking” Парковочные места
    “nappod” Капсулы сна и другие ресурсы из категории Здоровье и отдых
    "pipeline" Массив с правилом, копируется из инструкции примером правила бронирования
    "name" Имя правила (указывается произвольно)
    "alreadyBooked” Имя правила Проверка на бронирование ресурса другим пользователем
    "NextBookingTimeout” Имя правила Проверка на частоту бронирования ресурса
    "NappodTimeout” Имя правила Ограничение на создание нескольких бронирований подряд (для капсул сна)
    "anotherParkingBooked” Имя правила Проверка наличия у пользователя бронирований других ресурсов (для парковочных мест)
    "alreadyDeskBooked” Имя правила Проверка на наличие конфликта с другим бронированием того же ресурса (для рабочих мест)
    "alreadyMeetingRoomBooked” Имя правила Проверка на наличие конфликта с другим бронированием того же ресурса (для переговорных комнат)
    "NappodLimitPerDay” Имя правила Ограничение на количество бронирований в день (для капсул сна)
  3. После сохранения изменений загрузите обновленный файл 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": "Капсулу сна нельзя бронировать подряд"
        }
      }
    ]