Задача [API86]: Получение всех заметок пользователя за определенный период

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

Решение: необходимо реализовать API-метод, который будет возвращать все заметки пользователя, период исполнения которых входит в указанный период времени.

URL метода: /rest/api/diary/tasks/{userID}/all

Тип запроса: GET.

Метод принимает следующие входные параметры:

Длина периода не может быть отрицательной и более 366 дней. Дата начала и дата завершения периода должны представлять собой корректную дату в указанном году (в том числе високосном) и месяце, т.е. даты типа 2016-05-51 и 2014-02-29 некорректны.

Метод возвращает список всех заметок пользователя, которые входят в указанный промежуток времени (даты начала и завершения включаются в промежуток времени). Список должен быть отсортирован по дате и времени начала исполнения заметки (start).

В случае успешного выполнения метод возвращает массив объектов JSON, состоящий из следующих полей:

Пример запроса:

rest/api/diary/tasks/8f60bf3b-0fff-11e9-bfb4-001ef892a4ee/all?start=2016-12-05&finish=2016-12-25

Пример возвращаемого массива:

[   
    {
    "taskID" : "e6fc40b0-9fe4-11e6-9ce4-001ef892a4ee",
    "task" : "заметка №1",
    "start" : "2016-12-05 10:00:00",
    "finish" : "2016-12-05 16:00:00"
    },
    {
    "taskID" : "5dfc40b0-9fe4-11e6-9ce4-001ef892a4ee",
    "task" : "заметка №2",
    "start" : "2016-12-10 09:45:00",
    "finish" : "2016-12-10 12:00:00"
    },
    {
    "taskID" : "21sdd1sb0-9fe4-11e6-9ce4-001ef892a4ee",
    "task" : "заметка №3",
    "start" : "2016-12-20 09:00:00",
    "finish" : "2016-12-20 18:00:00"
    },
    {
    "taskID" : "11lc40b0-5fkh-11e6-9ce4-001ef892a4ee",
    "task" : "заметка №4",
    "start" : "2016-12-25 09:00:00",
    "finish" : "2016-12-25 18:00:00"
    }
]

Альтернативные потоки событий

Альтернативный поток №1. Не передан параметр start. Сервер возвращает ошибку HTTP 400 c cообщением:

{
    "errorCode": 3,
    "errorMessage": "Не передан параметр start"
}

действие не выполняется.

Альтернативный поток №2. Не передан параметр finish. Сервер возвращает ошибку HTTP 400 c cообщением:

{
    "errorCode": 3,
    "errorMessage": "Не передан параметр finish"
}

действие не выполняется.

Альтернативный поток №3. Передан период с некорректной длительностью - меньше нуля или больше 366. Сервер возвращает ошибку HTTP 400 с сообщением:

{
  "errorCode": 3,
  "errorMessage": "Передано некорректное значение периода:
   отрицательное либо больше 366 дней"
}

действие не выполняется.

Альтернативный поток №4. Передан некорректный параметр start: несуществующая дата, такой даты нет в указанном году (в том числе високосном) или месяце. Сервер возвращает ошибку HTTP 400 с сообщением:

{
  "errorCode": 3,
  "errorMessage": "Передан некорректный параметр start"
}

действие не выполняется.

Альтернативный поток №5. Передан некорректный параметр finish: несуществующая дата, такой даты нет в указанном году (в том числе високосном) или месяце. Сервер возвращает ошибку HTTP 400 с сообщением:

{
  "errorCode": 3,
  "errorMessage": "Передан некорректный параметр finish"
}

действие не выполняется.

Альтернативный поток №6. Не передан или передан некорректный (несуществующий) параметр userID. Сервер возвращает ошибку HTTP 400 с сообщением:

{
    "errorCode": 3,
    "errorMessage": "Не передан или передан некорректный параметр userID"
}

действие не выполняется.