public async Task <IEnumerable <ComandaView> > ObterTodasAsync(PaginacaoInfo paginacao) { var parameters = new DynamicParameters(); parameters.Add("@PageNumber", paginacao.Pagina, DbType.Int32); parameters.Add("@PageSize", paginacao.Linhas, DbType.Int32); using (var conn = CreateConnection()) { return(await conn.QueryAsync <ComandaView>(ConsultaComPaginacao, parameters)); } }
public async Task <IActionResult> ObterTodosAsync([FromQuery] PaginacaoInfo paginacao) { var comandas = await _comandaQuery.ObterTodasAsync(paginacao); return(Ok(comandas)); }
public static QueryPaginada <T> Query <T>(this IDbConnection cnn, string sql, object parametros, PaginacaoInfo paginacao) { var query = new QueryPaginada <T>(); var sqlPaginado = string.Empty; if (cnn is SqliteConnection) { sqlPaginado = $@"SELECT * FROM ( SELECT DENSE_RANK() over (order by {paginacao.OrderBy ?? "rownum"}) ""RowNumber"", queryResult.* FROM ( {sql} ) queryResult ) WHERE ""RowNumber"" BETWEEN {(paginacao.PageNumber - 1) * paginacao.PageSize + 1} AND {paginacao.PageNumber * paginacao.PageSize}"; } if (cnn is SqlConnection) { sqlPaginado = $@"SELECT * FROM ( SELECT ROW_NUMBER() over (order by queryResult.{paginacao.OrderBy}) as ""RowNumber"", * FROM ( {sql} ) queryResult ) queryPaginada WHERE queryPaginada.""RowNumber"" BETWEEN {(paginacao.PageNumber - 1) * paginacao.PageSize + 1} AND {paginacao.PageNumber * paginacao.PageSize} "; } query.TotalRegistros = cnn.ExecuteScalar <int>($"SELECT COUNT(1) FROM ({sql}) t_paginacao", parametros); query.Resultado = cnn.Query <T>(sqlPaginado, parametros); return(query); }