Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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));
        }