Перейти к основному содержимому

LookupEmployeesListQuery

Назначение

Lookup-список сотрудников с пагинацией и поиском по общему терму (Email, PhoneNumber, FirstName, LastName, MiddleName). Используется для выпадающих списков и выбора сотрудника. Требует разрешение Identity.Employees.View.

Цели

  • Поиск сотрудников по общему термину (OR Contains)
  • Пагинация и сортировка по CreatedAt (DESC)
  • Загрузка ролей для каждого сотрудника

Query: LookupEmployeesListQuery

Входные данные

ПолеТипОбязательноеОписание
Termstring?НетПоисковый термин (поиск по Email, PhoneNumber, FirstName, LastName, MiddleName)
PagingPagingQueryДаПагинация

Result: LookupEmployeesListQueryResult

ПолеТипОбязательноеОписание
EntriesPagingResult<LookupEmployeesListQueryResultEntry>ДаПостраничный список сотрудников

ResultEntry: LookupEmployeesListQueryResultEntry

ПолеТипОбязательноеОписание
UserIdGuidДаИдентификатор пользователя
CreatedAtDateTimeOffsetДаДата создания
EmailstringДаEmail
PhoneNumberstring?НетТелефон
NameFullNameДаФИО
StatusUserStatusДаСтатус пользователя
RolesIReadOnlyCollection<string>ДаНазвания ролей

Бизнес-логика

Основной сценарий

  1. Вызвать userEntityRepository.Filter с BuildQuery и сортировкой по CreatedAt (DESC).
  2. BuildQuery: при Term — OR Contains по Email, PhoneNumber, FirstName, LastName, MiddleName (ToLower).
  3. Загрузить UserRoleReferenceEntity через userRoleReferenceEntityRepository.GetByUserIds.
  4. Загрузить RoleEntity через roleEntityRepository.GetByIds.
  5. Сформировать Entry для каждого пользователя.
  6. Вернуть результат.

Альтернативные сценарии

  • Term пустой — все сотрудники (в рамках пагинации и тенанта).

Диаграмма алгоритма

Связанные сущности