Назначение
Lookup-список сотрудников с пагинацией и поиском по общему терму (Email, PhoneNumber, FirstName, LastName, MiddleName). Используется для выпадающих списков и выбора сотрудника. Требует разрешение Identity.Employees.View.
Цели
- Поиск сотрудников по общему термину (OR Contains)
- Пагинация и сортировка по CreatedAt (DESC)
- Загрузка ролей для каждого сотрудника
Query: LookupEmployeesListQuery
Входные данные
| Поле | Тип | Обязательное | Описание |
|---|
| Term | string? | Нет | Поисковый термин (поиск по Email, PhoneNumber, FirstName, LastName, MiddleName) |
| Paging | PagingQuery | Да | Пагинация |
Result: LookupEmployeesListQueryResult
| Поле | Тип | Обязательное | Описание |
|---|
| Entries | PagingResult<LookupEmployeesListQueryResultEntry> | Да | Постраничный список сотрудников |
ResultEntry: LookupEmployeesListQueryResultEntry
| Поле | Тип | Обязательное | Описание |
|---|
| UserId | Guid | Да | Идентификатор пользователя |
| CreatedAt | DateTimeOffset | Да | Дата создания |
| Email | string | Да | Email |
| PhoneNumber | string? | Нет | Телефон |
| Name | FullName | Да | ФИО |
| Status | UserStatus | Да | Статус пользователя |
| Roles | IReadOnlyCollection<string> | Да | Названия ролей |
Бизнес-логика
Основной сценарий
- Вызвать
userEntityRepository.Filter с BuildQuery и сортировкой по CreatedAt (DESC).
- BuildQuery: при Term — OR Contains по Email, PhoneNumber, FirstName, LastName, MiddleName (ToLower).
- Загрузить UserRoleReferenceEntity через
userRoleReferenceEntityRepository.GetByUserIds.
- Загрузить RoleEntity через
roleEntityRepository.GetByIds.
- Сформировать Entry для каждого пользователя.
- Вернуть результат.
Альтернативные сценарии
- Term пустой — все сотрудники (в рамках пагинации и тенанта).
Диаграмма алгоритма
Связанные сущности