Esempio n. 1
0
        public ActionResult <IEnumerable <Pessoa> > GetPessoas(
            [FromQuery] PessoaFiltro filtro,
            [FromQuery] PessoaOrdem ordem,
            [FromQuery] PessoaPaginacao paginacao)
        {
            //adicionando parametros ?nome=nome procura só por pessoas com determinado nome
            var livros = _context.Pessoas
                         .Filtrar(filtro)
                         .OrdenarPor(ordem)
                         .ToPessoaPaginada(paginacao);

            return(Ok(livros));
        }
        public static PessoaPaginada ToPessoaPaginada(
            this IQueryable <Pessoa> query, PessoaPaginacao paginacao)
        {
            int totalItens   = query.Count();
            int totalPaginas = (int)Math.Ceiling(totalItens / (double)paginacao.Tamanho);

            return(new PessoaPaginada
            {
                Total = totalItens,
                TotalPagina = totalPaginas,
                NumeroPagina = paginacao.Pagina,
                TamanhoPagina = paginacao.Tamanho,
                Resultado = query
                            .Skip(paginacao.Tamanho * (paginacao.Pagina - 1))
                            .Take(paginacao.Tamanho).ToList(),
                Anterior = (paginacao.Pagina > 1) ?
                           $"livros?tamanho={paginacao.Pagina-1}&pagina={paginacao.Tamanho}" : "",
                Proximo = (paginacao.Pagina < totalPaginas) ?
                          $"livros?tamanho={paginacao.Pagina + 1}&pagina={paginacao.Tamanho}" : "",
            });
        }