Формулировка проблемы: необходимо реализовать API-метод, позволяющий получить список сотрудников департамента.
Решение:
URL метода: rest/api/departments/content
Тип запроса: GET.
Метод принимает следующие строковые параметры:
departmentID - UUID департамента (обяз.);
onlyPosition - необязательный параметр,
true/false (по умолчанию
false);
onlyDepartments - необязательный параметр,
true/false (по умолчанию
false);
locale - необязательный параметр,
ru/en/kz (по умолчанию
ru).
Параметры onlyPosition и
onlyDepartments определяют в каком виде будет
выводиться json, а именно:
отображение только должностей данного департамента - параметр
onlyPositions;
отображение только подотделов данного департамента - параметр
onlyDepartments.
В случае, если:
onlyPositions = "true",
onlyDepartments = "true"
Отображать оба массива departments и
positions в случае успешного выполнения.
onlyPositions = "false",
onlyDepartments = "true"
Отображать только массив departments в случае
успешного выполнения (не отображать массив
positions).
onlyPositions = "true",
onlyDepartments = "false"
Отображать только массив positions в случае
успешного выполнения (не отображать массив
departments).
onlyPositions = "false",
'onlyDepartments` = "false"
Отображать оба массива positions и
departments в случае успешного выполнения (по
умолчанию).
В случае успешного выполнения возвращаеямая json
в самом общем виде имеет следующие поля:
departments - массив подотделов данного
департамента:
departmentID - UUID подразделения;
departmentName - название подотдела на
языке локали, переданной в параметре
locale;
departmentHead - руководитель подотдела:
headID - UUID руководителя;
headName - Ф.И.О. руководителя в
формате "Фамилия И.О."
positions - массив должностей данного департамента:
positionID - UUID должности;
positionName - название должности на языке локали,
переданной в параметре locale;
employees - массив сотрудников на данной должности:
employeeID - UUID сотрудника;
employeeName - Ф.И.О. сотрудника в формате "Фамилия И.О.".
Замечание:
Должности исполняющего обязанности руководителя и заместителей отображаются (в случае их наличия) для текущего департамента, ID которого был передан в параметре
departmentID, причем эти должности (в случае их наличия) отобразятся вместе с остальными должностями в массиве positions.
В случае неуспешного выполнения вовзращается json
с полями:
errorCode - код выполнения (число, отличное
от 0);
errorMessage - "Ошибка получения
содержимого департамента".
Альтернативные потоки событий:
Альтернативный поток №1. Параметр
departmentID не передан, либо он пустой.
Сервер возвращает ошибку:
Не передан параметр departmentID
действие не осуществляется.
Альтернативный поток №2. Передан некорректный (несуществующий)
параметр departmentID. Сервер возвращает
ошибку:
Передан некорректный параметр departmentID
действие не осуществляется.
Пример возвращаемого массива
{
"departments":
[
{
"departmentID": "7b097e72-e303-487f-83a1-cb76397abd57",
"departmentName": "Департамент технологий",
"departmentHead":
{
"headID": "f9b0b304-c856-4bcf-8615-e13cded16a14",
"headName": "Иванов И.И."
}
},
{
"departmentID": "8ii056e72-e563-667f-14j7-cb31867qwe66",
"departmentName": "Департамент развития",
"departmentHead":
{
"headID": "179bda2e-6d55-4ed5-b1be-890ffad280ba",
"headName": "Петров П.П."
}
}
],
"positions":
[
{
"positionID": "dc890ecf-e340-4ada-b7e6-d6541486a599",
"positionName": "Маркетолог",
"employees":
[
{
"employeeID": "f40b665c-f1f4-40b3-bdc5-291911def539",
"employeeName": "Попов П.В."
},
{
"employeeID": "22cc3118-3bcd-4543-98b4-a30982ba5c2a",
"employeeName": "Сидоров С.В."
},
{
"employeeID": "414acd59-aaf8-4202-8c00-b39e1fe73bbc",
"employeeName": "Орлов О.О."
}
]
},
{
"positionID": "2d9a641d-178c-4b05-b2f4-a231958718fd",
"positionName": "Финансовый аналитик",
"employees":
[
{
"employeeID": "c4ddd6b1-ade2-4ee2-ace5-aaec6a81d02a",
"employeeName": "Мартынов М.М."
},
{
"employeeID": "ee71a4c6-888a-4f04-86de-44ab394f5749",
"employeeName": "Быков Г.Г."
}
]
},
{
"positionID": "22a48f88-199a-4398-8eb6-15ba8ef35deb",
"positionName": "Юрист",
"employees":
[
{
"employeeID": "a2ba229b-366f-4d9c-b8bd-31742a7a519a",
"employeeName": "Мусина А.М."
},
{
"employeeID": "a5b67a57-bcba-4513-bc2d-089400457a53",
"employeeName": "Дарбаева Г.Г."
},
{
"employeeID": "ca936f83-3d4e-4c09-b393-9e548d18bc04",
"employeeName": "Жакин Н.Б."
},
{
"employeeID": "ff666f77-7ii8-5b09-o565-2f555v33qq11",
"employeeName": "Васильев Г.В."
}
]
}
]
}