namespace DocuMed.Repository.Handlers.Patients; public class GetPatientsQueryHandler(IRepositoryWrapper repositoryWrapper,UserManager userManager) : IRequestHandler> { public async Task> Handle(GetPatientsQuery request, CancellationToken cancellationToken) { var count = request.Count; if(count > Refers.MaxSize) count = Refers.SizeM; var query = repositoryWrapper.SetRepository() .TableNoTracking; if (!string.IsNullOrEmpty(request.SearchName)) { } if(!string.IsNullOrEmpty(request.NationalId)) { query = from users in userManager.Users join patients in query on users.Id equals patients.UserId where users.NationalId == request.NationalId select patients; } var result = await query .OrderByDescending(x => x.CreatedAt) .Skip(request.Page * count) .Take(count) .Select(PatientMapper.ProjectToSDto) .ToListAsync(cancellationToken); return result; } }