using AutoMapper; using MediatR; using mws.backend.dotnet.application.Common; using mws.backend.dotnet.application.Permissions; namespace mws.backend.dotnet.application.Users; public record GetUsersQuery(Guid ActorUserId, UserListFilter Filter, int Page, int PageSize) : IRequest>; public class GetUsersHandler(IUnitOfWork uow, IPermissionService permissions, IMapper mapper) : IRequestHandler> { private const string Screen = "users"; public async Task> Handle(GetUsersQuery query, CancellationToken ct) { await permissions.EnsureAsync(query.ActorUserId, Screen, PermissionAction.View, ct); var users = await uow.Users.SearchWithRolePagedAsync(query.Filter, query.Page, query.PageSize, ct); return new PagedResult { Items = mapper.Map>(users.Items), TotalCount = users.TotalCount, Page = users.Page, PageSize = users.PageSize, }; } }