Формулировка проблемы: необходимо реализовать 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": "Васильев Г.В." } ] } ] }