Ограничение на количество бронирований в день

Сервер BOOCO Meteor (v 1.x) / Примеры правил бронирования

Описание

По умолчанию в системе существует ограничение на бронирование капсулы сна более 5 раз в день. При необходимости значение, используемое по умолчанию, можно изменить.

Принцип работы

  • Создается переменная dayEnd.
  • Создается переменная dayStart путем вычитания 86 400 000 (количество миллисекунд в дне) из значения переменной dayEnd.
  • Создаются переменные end1 и start1 с типом данных Date.
  • Система выполняет поиск всех бронирований капсулы сна, которые были созданы в течение выбранного дня; считает их количество и сохраняет полученное значение в переменную myCount.
  • Система проверяет, не превышено ли ограничение на количество разрешенных бронирований.
  • Если ограничение превышено, то отображается сообщение о конфликте.

Пример использования

[
  {
    "$addFields": {
      "dayEnd": { "$toDate": { "$concat": [{ "$substr": ["$newEvent.start",
0, 11] }, "21:00:00", { "$substr": ["$newEvent.start", 19, 6] }] } }
    }
  },
{
   "$addFields": {
     "dayStart": { "$add": ["$dayEnd", -86400000] },
     "end1": { "$toDate": "$end" },
     "start1": { "$toDate": "$start" }
   }
 },
 {
    "$match": {
      "$and": [
        { "venueType": "nappod" },
        { "$expr": { "$eq": ["$organizer", "$newEvent.organizer"] } },
        { "$expr": { "$lt": ["$start1", "$dayEnd"] } },
        { "$expr": { "$gt": ["$end1", "$dayStart"] } }
      ]
    }
 },
 {
   "$count": "myCount"
  },
{
   "$match": { "myCount": { "$gte": 5 } }
},
{
   "$addFields": {
     "message": { "$concat":["Достигнут лимит бронирования капсул сна на данный день - ", { "$toString": "$myCount" }] }
  }
}
]