diff --git a/src/RAG.Api/Endpoints/Users/GetUserListEndpoint.cs b/src/RAG.Api/Endpoints/Users/GetUserListEndpoint.cs index 239f22a..ed1e698 100644 --- a/src/RAG.Api/Endpoints/Users/GetUserListEndpoint.cs +++ b/src/RAG.Api/Endpoints/Users/GetUserListEndpoint.cs @@ -5,7 +5,12 @@ using RAG.Application.Users.Queries; namespace RAG.Api.Endpoints.Users; -public class GetUserListEndpoint(IMediator mediator) : EndpointWithoutRequest> +public record GetUserListRequest +{ + public string? Search { get; init; } +} + +public class GetUserListEndpoint(IMediator mediator) : Endpoint> { public override void Configure() { @@ -13,9 +18,9 @@ public class GetUserListEndpoint(IMediator mediator) : EndpointWithoutRequest
  • >; +public record GetUserListQuery(string? Search) : IRequest>; public class GetUserListQueryHandler(RagDbContext db) : IRequestHandler> { public async Task> Handle(GetUserListQuery request, CancellationToken ct) { - return await db.Users + var query = db.Users .Include(u => u.UserRoles).ThenInclude(ur => ur.Role) + .AsQueryable(); + + if (!string.IsNullOrWhiteSpace(request.Search)) + { + var search = request.Search.ToLower(); + query = query.Where(u => u.Username.ToLower().Contains(search) + || u.Email.ToLower().Contains(search)); + } + + return await query .Select(u => new UserDto( u.Id, u.Username, u.Email, u.IsActive, u.CreatedAt, u.UserRoles.Select(ur => ur.Role.Name).ToList()))