Формулировка проблемы: необходимо получать данные системного календаря - в какие даты какие рабочие периоды установлены. Это требуется, в частности, для реализации табелей учёта рабочего времени.
Решение: необходимо реализовать метод API, который будет получать на вход период времени и выдавать для каждой даты периоды рабочего времени.
URL метода: /rest/api/settings/calendar.
Тип запроса: GET.
Входные параметры - даты начала и завершения запрашиваемого периода,
в формате YYYY-MM-DD:
date_start - дата начала
date_finish - дата завершения
Длина периода не может быть отрицательной и более 366 дней. Дата
начала и дата конца должны представлять собой корректную дату в
указанном году (в том числе високосном) и месяце, т.е. даты типа
2016-05-51 и 2014-02-29
некорректны.
Пример запроса:
rest/api/settings/calendar?date_start=2016-01-01&date_finish=2016-01-05
Выходные данные: объект JSON с ключами, соответствующими каждой из дат в указанном периоде, значениями этих ключей будут массивы периодов рабочих часов в эту дату. Если рабочих часов в какой-либо день не задано (нерабочий день/выходной/нестандартное время), то значением будет пустой массив.
Период рабочих часов представляет собой объект JSON с полями:
start - время начала работы
finish - время окончания работы
Оба поля в формате HH:mm.
Пример ответа:
{
"2015-01-01": [ ],
"2015-01-02": [ ],
"2015-01-03": [ ],
"2015-01-04": [ ],
"2015-01-05": [
{
"start": "09:00",
"finish": "13:00"
},
{
"start": "14:00",
"finish": "18:00"
}
]
}
Альтернативные потоки событий:
Альтернативный поток №1. Не передан параметр
date_start. Сервер возвращает ошибку HTTP 400 с
сообщением:
{
"errorCode": 13,
"errorMessage": "Не передан параметр date_start"
}
действие не выполняется.
Альтернативный поток №2. Не передан параметр
date_finish. Сервер возвращает ошибку HTTP 400 с
сообщением:
{
"errorCode": 13,
"errorMessage": "Не передан параметр date_finish"
}
действие не выполняется.
Альтернативный поток №3. Передан период с некорректной длительностью - меньше нуля или больше 366. Сервер возвращает ошибку HTTP 400 с сообщением:
{
"errorCode": 13,
"errorMessage": "Передано некорректное значение периода: отрицательное либо больше 366 дней"
}
действие не выполняется.
Альтернативный поток №4. Передана некорректная дата начала либо дата конца периода. Сервер возвращает ошибку HTTP 400 с сообщением:
{
"errorCode": 13,
"errorMessage": "Передан некорректный параметр date_start"
}
либо
{
"errorCode": 13,
"errorMessage": "Передан некорректный параметр date_finish"
}
действие не выполняется.