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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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));
        }
Beispiel #5
0
        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);
        }