public async Task <IActionResult> GetPatients([FromQuery] PatientParametersDto patientParametersDto, CancellationToken cancellationToken) { var patientQuery = new PatientListQuery(patientParametersDto); var patientsDto = await _mediator.Send(patientQuery, cancellationToken); var paginationMetadata = new { totalCount = patientsDto.TotalCount, pageSize = patientsDto.PageSize, currentPageSize = patientsDto.CurrentPageSize, currentStartIndex = patientsDto.CurrentStartIndex, currentEndIndex = patientsDto.CurrentEndIndex, pageNumber = patientsDto.PageNumber, totalPages = patientsDto.TotalPages, hasPrevious = patientsDto.HasPrevious, hasNext = patientsDto.HasNext }; Response.Headers.Add("X-Pagination", JsonSerializer.Serialize(paginationMetadata)); var response = new Response <IEnumerable <PatientDto> >(patientsDto); return(Ok(response)); }
public async Task <IActionResult> GetPatients([FromQuery] PatientParametersDto patientParametersDto) { var patientsFromRepo = await _patientRepository.GetPatientsAsync(patientParametersDto); var paginationMetadata = new { totalCount = patientsFromRepo.TotalCount, pageSize = patientsFromRepo.PageSize, currentPageSize = patientsFromRepo.CurrentPageSize, currentStartIndex = patientsFromRepo.CurrentStartIndex, currentEndIndex = patientsFromRepo.CurrentEndIndex, pageNumber = patientsFromRepo.PageNumber, totalPages = patientsFromRepo.TotalPages, hasPrevious = patientsFromRepo.HasPrevious, hasNext = patientsFromRepo.HasNext }; Response.Headers.Add("X-Pagination", JsonSerializer.Serialize(paginationMetadata)); var patientsDto = _mapper.Map <IEnumerable <PatientDto> >(patientsFromRepo); var response = new Response <IEnumerable <PatientDto> >(patientsDto); return(Ok(response)); }
public async Task <IActionResult> GetPatients([FromQuery] PatientParametersDto patientParametersDto) { // add error handling var query = new PatientListQuery(patientParametersDto); var queryResponse = await _mediator.Send(query); var paginationMetadata = new { totalCount = queryResponse.TotalCount, pageSize = queryResponse.PageSize, currentPageSize = queryResponse.CurrentPageSize, currentStartIndex = queryResponse.CurrentStartIndex, currentEndIndex = queryResponse.CurrentEndIndex, pageNumber = queryResponse.PageNumber, totalPages = queryResponse.TotalPages, hasPrevious = queryResponse.HasPrevious, hasNext = queryResponse.HasNext }; Response.Headers.Add("X-Pagination", JsonSerializer.Serialize(paginationMetadata)); var response = new Response <IEnumerable <PatientDto> >(queryResponse); return(Ok(response)); }
public async Task <PagedList <Patient> > GetPatientsAsync(PatientParametersDto patientParameters) { if (patientParameters == null) { throw new ArgumentNullException(nameof(patientParameters)); } var collection = _context.Patients as IQueryable <Patient>; // TODO: AsNoTracking() should increase performance, but will break the sort tests. need to investigate var sieveModel = new SieveModel { Sorts = patientParameters.SortOrder ?? "PatientId", Filters = patientParameters.Filters }; collection = _sieveProcessor.Apply(sieveModel, collection); return(await PagedList <Patient> .CreateAsync(collection, patientParameters.PageNumber, patientParameters.PageSize)); }
public PatientListQuery(PatientParametersDto queryParameters) { QueryParameters = queryParameters; }
public PatientListQuery(PatientParametersDto patientParametersDto) { PatientParametersDto = patientParametersDto; }