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 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> 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); }