コード例 #1
0
        public PaginacaoLista <Palavra> ObterPalavras(PalavraUrlQuery palavraUrlQuery)
        {
            var lista = new PaginacaoLista <Palavra>();
            var item  = _banco.Palavras.AsNoTracking().AsQueryable();

            if (palavraUrlQuery.Data.HasValue)
            {
                item = item.Where(a => a.Criado > palavraUrlQuery.Data.Value || a.Atualizado > palavraUrlQuery.Data.Value);
            }
            if (palavraUrlQuery.PaginaNumero.HasValue)
            {
                var totalDeRegistro = item.Count();
                item = item.Skip((palavraUrlQuery.PaginaNumero.Value - 1) * palavraUrlQuery.RegistroPagina.Value).Take(palavraUrlQuery.RegistroPagina.Value);
                var pagina = new Paginacao();

                pagina.NumeroPagina    = palavraUrlQuery.PaginaNumero.Value;
                pagina.RegistroPagina  = palavraUrlQuery.RegistroPagina.Value;
                pagina.TotalDeRegistro = totalDeRegistro;
                pagina.TotalDePagina   = (int)Math.Ceiling((double)totalDeRegistro / palavraUrlQuery.RegistroPagina.Value);
                lista.Paginacao        = pagina;
            }

            lista.Resultados.AddRange(item.ToList());

            return(lista);
        }
コード例 #2
0
        public ActionResult FindAll([FromQuery] PalavraUrlQuery palavraUrlQuery)
        {
            var item = _repository.ObterPalavras(palavraUrlQuery);


            if (item.Resultados.Count == 0)
            {
                return(NotFound());
            }

            PaginacaoLista <PalavraDTO> palavraLista = CriarLinksPalavras(palavraUrlQuery, item);

            return(Ok(palavraLista));
        }
コード例 #3
0
        /// <summary>
        /// CriarLinksPalavras Cria o link de paginação no obter todas
        /// </summary>
        /// <param name="palavraUrlQuery"></param>
        /// <param name="item"></param>
        /// <returns></returns>
        private PaginacaoLista <PalavraDTO> CriarLinksPalavras(PalavraUrlQuery palavraUrlQuery, PaginacaoLista <Palavra> item)
        {
            var palavraLista = _mapper.Map <PaginacaoLista <Palavra>, PaginacaoLista <PalavraDTO> >(item);

            foreach (var palavra in palavraLista.Resultados)
            {
                palavra.Links = new List <LinkDTO>();
                palavra.Links.Add(new LinkDTO("self", Url.Link("ObterPalavra", new { id = palavra.Id }), "GET"));
            }
            palavraLista.Links.Add(new LinkDTO("self", Url.Link("ObterTodas", palavraUrlQuery), "GET"));

            if (item.Paginacao != null)
            {
                Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(item.Paginacao));

                if (palavraUrlQuery.PaginaNumero + 1 <= item.Paginacao.TotalDePagina)
                {
                    var queryString = new PalavraUrlQuery()
                    {
                        PaginaNumero = palavraUrlQuery.PaginaNumero + 1, RegistroPagina = palavraUrlQuery.RegistroPagina, Data = palavraUrlQuery.Data
                    };
                    palavraLista.Links.Add(new LinkDTO("prox", Url.Link("ObterTodas", queryString), "GET"));
                }

                if (palavraUrlQuery.PaginaNumero - 1 > 0)
                {
                    var queryString = new PalavraUrlQuery()
                    {
                        PaginaNumero = palavraUrlQuery.PaginaNumero - 1, RegistroPagina = palavraUrlQuery.RegistroPagina, Data = palavraUrlQuery.Data
                    };
                    palavraLista.Links.Add(new LinkDTO("ant", Url.Link("ObterTodas", queryString), "GET"));
                }
            }

            return(palavraLista);
        }