public static LivroPaginado From(LivroPaginacao parametros, IQueryable <LivroApi> origem) { if (parametros == null) { parametros = new LivroPaginacao(); } int totalItens = origem.Count(); //260 itens / 25 itens por página >> 10,4 e seu teto é 11. int totalPaginas = (int)Math.Ceiling(totalItens / (double)parametros.Tamanho); bool temPaginaAnterior = (parametros.Pagina > 1); bool temProximaPagina = (parametros.Pagina < totalPaginas); return(new LivroPaginado { Total = totalItens, TotalPaginas = totalPaginas, TamanhoPagina = parametros.Tamanho, NumeroPagina = parametros.Pagina, Resultado = origem.Skip(parametros.QtdeParaDescartar).Take(parametros.Tamanho).ToList(), Anterior = temPaginaAnterior ? $"livros?pagina={parametros.Pagina-1}&tamanho={parametros.Tamanho}" : "", Proximo = temProximaPagina ? $"livros?pagina={parametros.Pagina+1}&tamanho={parametros.Tamanho}" : "" }); }
public static LivroPaginado ToLivroPaginado(this IQueryable <LivroApi> query, LivroPaginacao paginacao) { var totalItens = query.Count(); var totalPaginas = (int)Math.Ceiling(totalItens / (double)paginacao.Tamanho); return(new LivroPaginado { Total = totalItens, TotalPaginas = totalPaginas, NumeroPagina = paginacao.Pagina, TamanhoPagina = paginacao.Tamanho, Resultando = 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}" : ""), }); }