Задача [API57]: API для получения списка сотрудников департамента

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

Решение:

URL метода: rest/api/departments/content

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

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

Параметры onlyPosition и onlyDepartments определяют в каком виде будет выводиться json, а именно:

В случае, если:

В случае успешного выполнения возвращаеямая json в самом общем виде имеет следующие поля:

Замечание:

Должности исполняющего обязанности руководителя и заместителей отображаются (в случае их наличия) для текущего департамента, ID которого был передан в параметре departmentID, причем эти должности (в случае их наличия) отобразятся вместе с остальными должностями в массиве positions.

В случае неуспешного выполнения вовзращается json с полями:

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

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

  {
    "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": "Васильев Г.В."
          }
        ]
      }
    ]
  }