Api-PWA/DocuMed.Repository/Handlers/Patients/GetPatientsQueryHandler.cs

34 lines
1.2 KiB
C#

namespace DocuMed.Repository.Handlers.Patients;
public class GetPatientsQueryHandler(IRepositoryWrapper repositoryWrapper,UserManager<ApplicationUser> userManager) : IRequestHandler<GetPatientsQuery,List<PatientSDto>>
{
public async Task<List<PatientSDto>> Handle(GetPatientsQuery request, CancellationToken cancellationToken)
{
var count = request.Count;
if(count > Refers.MaxSize)
count = Refers.SizeM;
var query = repositoryWrapper.SetRepository<Patient>()
.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;
}
}