Формулировка проблемы: сейчас при использовании
API метода /rest/api/settings/calendar в
возвращаемых результатах нет информации о типе периода: стандартный,
нестандартный, нерабочий. Данная информация требуется для получения
праздничных дней при формировании табеля учета рабочего времени.
Связанные задачи: 0381-API получения настроек календаря
Решение: необходимо доработать метод API
/rest/api/settings/calendar, добавив входной
параметр type, который обозначает тип периода
(необяз.). Данный параметр принимает следующие значения:
standard - возвращаются результаты, тип
периода которых стандартный.
custom - возвращаются результаты, тип периода
которых нестандартный.
holiday - возвращаются результаты, тип
периода которых нерабочий.
Если пользователь в запросе не указывает данный параметр, то по умолчанию возвращаются все результаты вне зависимости от типа периода.
Тип запроса не изменяется.
В выходные параметры необходимо добавить параметр
type - тип периода. Данный параметр принимает
одно из значений:
standard - стандартное время;
custom - нестандартное время;
holiday - нерабочий день.
Замечание
Так как нам необходимо выводить тип периода для каждого дня, а менять структуру вывода для уже реализованного метода мы без крайней необходимости не можем, то для тех дней, в которых нет рабочих часов, в массиве всё равно присутствует блок
{ "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 не соответствует ни одному из возможных значений"
}
действие не выполняется.