Задача [API72]: API получения списка пользователей

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

Решение: реализовать метод API, который позволяет выводить список пользователей по различным параметрам: по группам, по департаментам, с учетом делегирования прав, с учетом назначения на должность и т.д.

URL метода:/rest/api/userchooser/search_ext.

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

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

Примечание. Если поиск производится только по подчиненным пользователям, то есть showAll=false, независимо от введенного департамента, группы или должности
в результатах всегда будут возвращаться сам пользователь и те пользователи, которые делегировали ему право на создание работ. То есть для получения всех пользователей определенного(-й) департамента, группы либо должности нужно указать параметр showAll=true, и в результатах не будут возвращаться сам пользователь и те пользователи, которые делегировали ему право на создание работ (см. примеры ниже).

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

Примеры запроса: Получение списка всех пользователей только указанного департамента:
/rest/api/userchooser/search_ext?userID=c4ddd6b1-ade2-4ee2-ace5-aaec6a81d02a&departmentID =ee71a4c6-888a-4f04-86de-44ab394f5749&showAll=true

Получение списка всех пользователей указанной группы:
/rest/api/userchooser/search_ext?userID=c4ddd6b1-ade2-4ee2-ace5-aaec6a81d02a&groupID =65err4c6-888a-4f04-86de-44a6erf165749&showAll=true

Получение списка всех пользователей, которые назначены на указанную должность:
/rest/api/userchooser/search_ext?userID=c4ddd6b1-ade2-4ee2-ace5-aaec6a81d02a&filterpositionID =ee71a5g1-321a-4rr4-86de-4462rg3s5749&showAll=true

Получение списка всех пользователей указанного департамента (рекурсивно):
/rest/api/userchooser/search_ext?userID=c4ddd6b1-ade2-4ee2-ace5-aaec6a81d02a&filterdepartmentID =6wrrt624c6-888a-4f04-86de-44ab394f5749&showAll=true

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

{  
    {  
        "personName":"Иванов И.И.",  
        "personID":"ew2f6vc6-gf2g-4f04-26de-klnlkse44f1s2g42",  
        "departmentName":"Департамент транспорта",  
        "positionName":"Руководитель департамента",  
        "customField":"",  
        "lastname":"Иванов",  
        "firstname":"Иван",  
        "patronymic":"Иванович"  

     },    
     {  

        "personName":"Борисов Б.И.",  
        "personID":"2g2ta4c6-6g8a-w504-b1ge-wr45b5r2vvv023g",  
        "departmentName":"Департамент транспорта",  
        "positionName":"Ассистент руководителя",  
        "customField":"",  
        "lastname":"Борисов",  
        "firstname":"Борис",  
        "patronymic":"Иванович"  

      },  
      {

        "personName":"Петров А.П.",
        "personID":"",
        "departmentName":"Департамент транспорта",
        "positionName":"Менеджер",
        "customField":"",
        "lastname":"Петров",
        "firstname":"Александр",
        "patronymic":"Петрович"

        }
}