Формулировка проблемы: необходимо получать данные системного календаря - в какие даты какие рабочие периоды установлены. Это требуется, в частности, для реализации табелей учёта рабочего времени.
Решение: необходимо реализовать метод 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" }
действие не выполняется.