public PaginationList <Anuncio> ObterAnuncios(AnuncioUrlQuery query) { var lista = new PaginationList <Anuncio>(); var item = _banco.Anuncios.AsNoTracking().AsQueryable(); if (query.Data.HasValue) { item = item.Where(a => a.Criado > query.Data.Value || a.Atualizado > query.Data.Value); } if (query.PagNum.HasValue) { var quantidadeTotalRegistros = item.Count(); item = item.Skip((query.PagNum.Value - 1) * query.PagRegistro.Value).Take(query.PagRegistro.Value); var paginacao = new Paginacao(); paginacao.NumeroPagina = query.PagNum.Value; paginacao.RegistroPorPagina = query.PagRegistro.Value; paginacao.TotalRegistros = quantidadeTotalRegistros; paginacao.TotalPaginas = (int)Math.Ceiling((double)quantidadeTotalRegistros / query.PagRegistro.Value); lista.Paginacao = paginacao; } lista.AddRange(item.ToList()); return(lista); }
public ActionResult ObterAnuncios([FromQuery] AnuncioUrlQuery query) { var item = _repository.ObterAnuncios(query); if (item.Count == 0) { return(NotFound()); } if (item.Paginacao != null) { Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(item.Paginacao)); } var lista = _mapper.Map <PaginationList <Anuncio>, PaginationList <AnuncioDTO> >(item); foreach (var anuncio in lista) { anuncio.Links = new List <LinkDTO>(); anuncio.Links.Add(new LinkDTO("self", Url.Link("ObterAnuncio", new { id = anuncio.id }), "GET")); } return(Ok(lista)); }