Задача [0456]: Доработка API получения настроек календаря

Формулировка проблемы: сейчас при использовании API метода /rest/api/settings/calendar в возвращаемых результатах нет информации о типе периода: стандартный, нестандартный, нерабочий. Данная информация требуется для получения праздничных дней при формировании табеля учета рабочего времени.

Связанные задачи: 0381-API получения настроек календаря

Решение: необходимо доработать метод API /rest/api/settings/calendar, добавив входной параметр type, который обозначает тип периода (необяз.). Данный параметр принимает следующие значения:

Если пользователь в запросе не указывает данный параметр, то по умолчанию возвращаются все результаты вне зависимости от типа периода.

Тип запроса не изменяется.

В выходные параметры необходимо добавить параметр type - тип периода. Данный параметр принимает одно из значений:

Замечание

Так как нам необходимо выводить тип периода для каждого дня, а менять структуру вывода для уже реализованного метода мы без крайней необходимости не можем, то для тех дней, в которых нет рабочих часов, в массиве всё равно присутствует блок { "type": "holiday" } (для специально назначенных выходных) или{ "type": "standard" } (для обычных выходных по стандартному календарю).

Пример запроса без указания параметра type:

rest/api/settings/calendar?date_start=2016-05-01&date_finish=2016-05-04

Пример ответа на запрос без указания параметра type:

{
  "2015-05-01": [
    {
      "type": "holiday"
    }
  ],
  "2015-05-02": [
    { 
      "type": "custom"
    }
  ],
  "2015-05-03": [
    {
      "type" : "standard"
    }
  ],
  "2015-05-04": [
   {
      "start": "09:00",
      "finish": "13:00",
      "type" : "standard"
    },
    {
      "start": "14:00",
      "finish": "18:00",
      "type" : "standard"
    }
  ]
}

Пример запроса с указанием параметра type:

rest/api/settings/calendar?date_start=2016-05-01&date_finish=2016-05-04&type=standard

Пример ответа на запрос с указанием параметра type:

{
  "2015-05-03": [
    {
      "type" : "standard"
    }
  ],
  "2015-05-04": [
   {
      "start": "09:00",
      "finish": "13:00",
      "type" : "standard"
    },
    {
      "start": "14:00",
      "finish": "18:00",
      "type" : "standard"
    }
  ]
}

Альтернативные потоки событий:

Необходимо добавить к существующим альтернативным потокам следующий:

Альтернативный поток №5. Передан параметр type, несоответствующий ни одному из возможных значений. Сервер возвращает ошибку HTTP 400 с сообщением:

{
  "errorCode": 13,
  "errorMessage": "Параметр type не соответствует ни одному из возможных значений"
}

действие не выполняется.