Формулировка проблемы: для написания компонента предупреждения о перегрузке необходимо получение данных о его нагрузке.
Решение:
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