public PaginationList <Palavra> get(QueryPaginacao query) { var item = _banco.Palavras.AsNoTracking().AsQueryable(); var lista = new PaginationList <Palavra>(); if (query.Data.HasValue) { item = item.Where(C => C.Criado > query.Data.Value || C.Atualizado > query.Data.Value); } if (query.Pagnumero.HasValue) { var quantidadeRegistros = item.Count(); item = item.Skip((query.Pagnumero.Value - 1) * query.Pagregistro.Value).Take(query.Pagregistro.Value); Paginacao paginacao = new Paginacao(); paginacao.NumeroPagina = query.Pagnumero.Value; paginacao.Registroporpagina = query.Pagregistro.Value; paginacao.TotalRegistros = quantidadeRegistros; paginacao.TotalPaginas = (int)Math.Ceiling((double)quantidadeRegistros / query.Pagregistro.Value); lista.Paginacao = paginacao; } lista.Results.AddRange(item.ToList()); return(lista); }
private PaginationList <PalavraDTO> CriarLinksListPalavraDTO(QueryPaginacao query, PaginationList <Palavra> item) { var lista = _mapper.Map <PaginationList <Palavra>, PaginationList <PalavraDTO> >(item); foreach (var palavraDTO in lista.Results) { palavraDTO.Links.Add(new LinkDTO("self", Url.Link("IdObterPalavra", new { id = palavraDTO.Id }), "GET")); } lista.Links.Add(new LinkDTO("self", Url.Link("ObterTodas", query), "GET")); if (item.Paginacao != null) { Response.Headers.Add("X-Pagination:", JsonConvert.SerializeObject(item.Paginacao)); if (query.Pagnumero + 1 <= item.Paginacao.TotalPaginas) { var querystring = new QueryPaginacao() { Pagnumero = query.Pagnumero + 1, Pagregistro = query.Pagregistro, Data = query.Data }; lista.Links.Add(new LinkDTO("next", Url.Link("ObterTodas", querystring), "GET")); } if (query.Pagnumero - 1 > 0) { var querystring = new QueryPaginacao() { Pagnumero = query.Pagnumero - 1, Pagregistro = query.Pagregistro, Data = query.Data }; lista.Links.Add(new LinkDTO("prev", Url.Link("ObterTodas", querystring), "GET")); } } return(lista); }
public ActionResult get([FromQuery] QueryPaginacao query) { var item = _repository.get(query); if (item.Results.Count == 0) { return(NotFound()); } PaginationList <PalavraDTO> lista = CriarLinksListPalavraDTO(query, item); return(Ok(lista)); }