Формулировка проблемы: для написания компонента предупреждения о перегрузке необходимо получение данных о его нагрузке.
Решение:
URL метода: rest/person/workload
Тип: POST.
Метод принимает на вход JSON следующего вида:
{
"userID": "f9b0b304-c856-4bcf-8615-e13cded16a14",
"startDate": "2015-08-24",
"finishDate": "2015-08-25"
}
где:
userID - идентификатор пользователя,
нагрузку которого необходимо получить. Если параметр
отсутствует, то используется текущий залогиненный пользователь
startDate - дата, начиная с которой
(включительно) необходимо получить значения нагрузок
finishDate - дата, которой следует
ограничить получение значений нагрузок (включительно).
Если необходимо получить значение нагрузки только за определенную
дату, следует передать одинаковые значения
startDate и finishDate. Если
оба этих параметра отсутствуют,
метод передаёт значение нагрузки на текущий день, в противном
случае - возвращает ошибку.
Если не передан ни один параметр, либо передан пустой объект или пустая строка, возвращается значение нагрузки залогиненного пользователя на текущую дату.
Метод возвращает массив JSON следующего вида:
[
{
"date": "2015-08-24",
"value": "10"
},
{
"date": "2015-08-24",
"value": "30"
}
]
где:
date - дата, за которую взято значение
нагрузки, в формате YYYY-mm-dd
value - значение нагрузки
В дополнение к данному методу необходимо реализовать его вариант для получения нагрузки сразу для нескольких пользователей:
URL метода: rest/person/workload/m
Тип: POST
В качестве входных данных метод принимает массив входных структур
метода /rest/person/workload, т.е.:
[
{
"userID":"e5067b88-114b-4a04-6cc6-679655dc652e",
"startDate": "2015-02-08",
"finishDate": "2015-02-09"
},
{
"userID":"e5067b88-114b-4a04-6cc6-679655dc6521",
"startDate": "2015-02-08",
"finishDate": "2015-02-09"
}
]
метод возвращает карту значений нагрузки, в которой ключами
являются идентификаторы пользователей, а значениями - массивы,
аналогичные выходным массивам метода
rest/person/workload:
[
{
"e5067b88-114b-4a04-6cc6-679655dc6521": [
{
"date": "2015-02-08",
"value": "72"
},
{
"date": "2015-02-09",
"value": "84"
}
]
},
{
"e5067b88-114b-4a04-6cc6-679655dc652e": [
{
"date": "2015-02-08",
"value": "82"
},
{
"date": "2015-02-09",
"value": "13"
}
]
}
]
Альтернативные потоки событий.
Альтернативный поток №1. Переданa строка с некорректным userID (пользователь не найден либо удалён). Сервер возвращает ошибку HTTP 500 с сообщением:
Пользователь с идентификатором userID не найден либо удалён
Альтернативный поток №2. Передано некорректное значение
параметра startDate либо
finishDate (формат даты не соответствует).
Сервер возвращает ошибку HTTP 400 с сообщением:
Некорретное значение параметра startDate
или
Некорретное значение параметра finishDate
Альтернативный поток №3. Передано значение
stardDate, но не передано значение
finishDate либо наоборот. Сервер возвращает
ошибку HTTP 400 с сообщением:
Отсутствует параметр startDate или
Отсутствует параметр finishDate