Задача [0195]: Получение нагрузки и эффективности пользователя

Формулировка проблемы: для написания компонента предупреждения о перегрузке необходимо получение данных о его нагрузке.

Решение:

Получение нагрузки пользователя

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

Получение эффективности пользователя

URL метода: rest/api/person/efficiency

Типы запроса, входные и выходные параметры, а также сообщения об ошибках аналогичны таковым в методе rest/api/person/workload.