public ListaPaginacao <Palavra> ObterTodas(PalavraUrlParams query) { var lista = new ListaPaginacao <Palavra>(); var itens = _banco.palavras.AsNoTracking().AsQueryable(); if (query.DataFiltro.HasValue) { itens = itens.Where(x => x.Criado >= query.DataFiltro.Value); } if (query.PagNumero.HasValue) { var qtditens = itens.Count(); itens = itens.Skip((query.PagNumero.Value - 1) * query.RegistroPorPag.Value).Take(query.RegistroPorPag.Value); Paginacao pagina = new Paginacao(); pagina.NumeroPagina = query.PagNumero.Value; pagina.RegistroPorPagina = query.RegistroPorPag.Value; pagina.TotalRegistros = qtditens; pagina.TotalPaginas = (int)Math.Ceiling((double)qtditens / query.RegistroPorPag.Value); lista.paginacao = pagina; } lista.Resultados.AddRange(itens.ToList()); return(lista); }
public ListaPaginacao <Palavra> ObterPalavras(PalavraUrlQuery query) { ListaPaginacao <Palavra> lista = new ListaPaginacao <Palavra>(); IQueryable <Palavra> itens = _contexto.Palavras.AsNoTracking().AsQueryable(); if (query.Data.HasValue) { itens = itens.Where(p => p.Criado > query.Data.Value || p.Atualizado > query.Data.Value); } if (query.NumeroPagina.HasValue) { int quantidadeTotalRegistros = itens.Count(); itens = itens.Skip((query.NumeroPagina.Value - 1) * query.QuantidadeRegistros.Value).Take(query.QuantidadeRegistros.Value); Paginacao paginacao = new Paginacao(); paginacao.NumeroPagina = query.NumeroPagina.Value; paginacao.RegistrosPorPagina = query.QuantidadeRegistros.Value; paginacao.TotalRegistros = quantidadeTotalRegistros; paginacao.TotalPaginas = (int)Math.Ceiling((double)quantidadeTotalRegistros / query.QuantidadeRegistros.Value); lista.Paginacao = paginacao; } lista.Resultados.AddRange(itens.ToList()); return(lista); }
public ActionResult ObterTodas([FromQuery] PalavraUrlQuery query) { ListaPaginacao <Palavra> palavras = _repository.ObterPalavras(query); if (palavras.Resultados.Count == 0) { return(NotFound()); } ListaPaginacao <PalavraDTO> lista = CriarLinkListaPalavraDTO(query, palavras); return(Ok(lista)); }
public ActionResult ObterTodas([FromQuery] PalavraUrlParams query) { var itens = _repository.ObterTodas(query); if (itens.Resultados.Count == 0) { return(NotFound()); } ListaPaginacao <PalavraDTO> lista = CriarLinks(query, itens); return(Ok(lista)); }
private ListaPaginacao <PalavraDTO> CriarLinkListaPalavraDTO(PalavraUrlQuery query, ListaPaginacao <Palavra> palavras) { ListaPaginacao <PalavraDTO> lista = _mapper.Map <ListaPaginacao <Palavra>, ListaPaginacao <PalavraDTO> >(palavras); foreach (var palavra in lista.Resultados) { palavra.Links.Add(new LinkDTO("self", Url.Link("ObterPalavra", new { id = palavra.Id }), "GET")); } lista.Links.Add(new LinkDTO("self", Url.Link("ObterTodas", query), "GET")); if (lista.Paginacao != null) { Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(lista.Paginacao)); if (query.NumeroPagina + 1 <= lista.Paginacao.TotalPaginas) { var queryString = new PalavraUrlQuery() { NumeroPagina = query.NumeroPagina + 1, QuantidadeRegistros = query.QuantidadeRegistros, Data = query.Data }; lista.Links.Add(new LinkDTO("next", Url.Link("ObterTodas", queryString), "GET")); } if (query.NumeroPagina - 1 > 0) { var queryString = new PalavraUrlQuery() { NumeroPagina = query.NumeroPagina - 1, QuantidadeRegistros = query.QuantidadeRegistros, Data = query.Data }; lista.Links.Add(new LinkDTO("prev", Url.Link("ObterTodas", queryString), "GET")); } } return(lista); }
private ListaPaginacao <PalavraDTO> CriarLinks(PalavraUrlParams query, ListaPaginacao <Palavra> itens) { var lista = _mapper.Map <ListaPaginacao <Palavra>, ListaPaginacao <PalavraDTO> >(itens); foreach (var palavra in lista.Resultados) { palavra.Links = new List <LinkDTO>(); palavra.Links.Add( new LinkDTO("self", Url.Link("ObterPalavra", new { id = palavra.Id }), "GET") ); } if (itens.paginacao != null) { Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(itens.paginacao)); } lista.Links.Add(new LinkDTO("self", Url.Link("ObterTodas", query), "GET")); if (query.PagNumero.HasValue && query.PagNumero.Value + 1 <= itens.paginacao.TotalPaginas) { var querytrig = new PalavraUrlParams() { PagNumero = query.PagNumero + 1, RegistroPorPag = query.RegistroPorPag, DataFiltro = query.DataFiltro }; lista.Links.Add(new LinkDTO("proximo", Url.Link("ObterTodas", querytrig), "GET")); } if (query.PagNumero.HasValue && query.PagNumero.Value - 1 > 0) { var querytrig = new PalavraUrlParams() { PagNumero = query.PagNumero - 1, RegistroPorPag = query.RegistroPorPag, DataFiltro = query.DataFiltro }; lista.Links.Add(new LinkDTO("Anterior", Url.Link("ObterTodas", querytrig), "GET")); } return(lista); }