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

SearchEmployeeListQuery

Назначение

Поиск сотрудников по отдельным фильтрам: Email, PhoneNumber, FirstName, LastName, MiddleName. Используется для таблиц и фильтрации. Требует разрешение Identity.Employees.View.

Цели

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

Query: SearchEmployeeListQuery

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

ПолеТипОбязательноеОписание
Emailstring?НетФильтр по Email (Contains)
PhoneNumberstring?НетФильтр по PhoneNumber (Contains)
FirstNamestring?НетФильтр по имени
LastNamestring?НетФильтр по фамилии
MiddleNamestring?НетФильтр по отчеству
PagingPagingQueryДаПагинация

Result: SearchEmployeeListQueryResult

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

ResultEntry: SearchEmployeeListQueryResultEntry

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

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

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

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

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

  • Все фильтры пустые — полный список в рамках пагинации и тенанта.

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

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