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));
        }
Пример #2
0
        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));
        }