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