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}" : "", }); }