using Dpz.Core.Public.Entity.Auth;
using Dpz.Core.Service.Mediator.Features.Auth.Contracts;
namespace Dpz.Core.Service.Mediator.Features.Auth.Queries;
public class SearchApplicationAccessRequestsQueryHandler(
IRepository<ApplicationAccessRequest> repository
) : IRequestHandler<SearchApplicationAccessRequestsQuery, PagedListWarp<AuthAccessRequestItem>>
{
public async ValueTask<PagedListWarp<AuthAccessRequestItem>> Handle(
SearchApplicationAccessRequestsQuery request,
CancellationToken cancellationToken
)
{
var query = repository.SearchFor(x => true);
if (!string.IsNullOrWhiteSpace(request.Account))
{
query = query.Where(x => x.UserId == request.Account);
}
if (!string.IsNullOrWhiteSpace(request.ClientId))
{
query = query.Where(x => x.ClientId == request.ClientId);
}
if (request.StartDate.HasValue)
{
query = query.Where(x => x.RequestTime >= request.StartDate.Value);
}
if (request.EndDate.HasValue)
{
var end = request.EndDate.Value.Date.AddDays(1).AddTicks(-1);
query = query.Where(x => x.RequestTime <= end);
}
var pagedList = await query
.OrderByDescending(x => x.RequestTime)
.ToPagedListAsync<ApplicationAccessRequest, AuthAccessRequestItem>(
request.Page,
request.Limit,
cancellationToken
);
return pagedList.ToPagedListWarp();
}
}
AI 正在分析代码…
评论加载中...