34 lines
1.2 KiB
C#
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;
|
|
}
|
|
} |