public async Task <IActionResult> GetObservaciones([FromQuery] ObservacionParametersDto observacionParameters) { var observacionsFromRepo = await _observacionRepository.GetObservacionesAsync(observacionParameters); var paginationMetadata = new { totalCount = observacionsFromRepo.MetaData.TotalCount, pageSize = observacionsFromRepo.MetaData.PageSize, currentPageSize = observacionsFromRepo.MetaData.CurrentPageSize, currentStartIndex = observacionsFromRepo.MetaData.CurrentStartIndex, currentEndIndex = observacionsFromRepo.MetaData.CurrentEndIndex, pageNumber = observacionsFromRepo.MetaData.PageNumber, totalPages = observacionsFromRepo.MetaData.TotalPages, hasPrevious = observacionsFromRepo.MetaData.HasPrevious, hasNext = observacionsFromRepo.MetaData.HasNext }; Response.Headers.Add("X-Pagination", JsonSerializer.Serialize(paginationMetadata)); var observacionsDto = _mapper.Map <IEnumerable <ObservacionDto> >(observacionsFromRepo); var response = new Response <IEnumerable <ObservacionDto> >(observacionsDto); return(Ok(response)); }
public async Task <PagedList <Observacion> > GetObservacionesAsync(ObservacionParametersDto observacionParameters) { if (observacionParameters == null) { throw new ArgumentNullException(nameof(observacionParameters)); } // TODO: AsNoTracking() should increase performance, but will break the sort tests. need to investigate var collection = _context.Observaciones .Include(v => v.Visita) as IQueryable <Observacion>; var sieveModel = new SieveModel { Sorts = observacionParameters.SortOrder ?? "Id", Filters = observacionParameters.Filters }; collection = _sieveProcessor.Apply(sieveModel, collection); return(await PagedList <Observacion> .CreateAsync(collection, observacionParameters.PageNumber, observacionParameters.PageSize)); }