public async Task <PaginacionModel> devolverPaginacion(string storedProcedure, int numeroPagina, int cantidadElementos, IDictionary <string, object> parametrosFiltro, string ordenamientoColumna) { PaginacionModel paginacionModel = new PaginacionModel(); // rows List <IDictionary <string, object> > listaReporte = null; // parámetros salida int totalRecords = 0; int totalPaginas = 0; try { var connection = factoryConnection.GetConnection(); DynamicParameters parametros = new DynamicParameters(); // agregar dinámicamente parámetros de filtro del cliente foreach (var param in parametrosFiltro) { parametros.Add("@" + param.Key, param.Value); } // Parámetros de entrada parametros.Add("@NumeroPagina", numeroPagina); parametros.Add("@CantidadElementos", cantidadElementos); parametros.Add("@Ordenamiento", ordenamientoColumna); // Parámetros de salida parametros.Add("@TotalRecords", totalRecords, DbType.Int32, ParameterDirection.Output); parametros.Add("@TotalPaginas", totalPaginas, DbType.Int32, ParameterDirection.Output); var result = await connection.QueryAsync(storedProcedure, parametros, commandType : CommandType.StoredProcedure); // hacer query de linq que convierta a IDictionary las rows listaReporte = result.Select(x => (IDictionary <string, object>)x).ToList(); // agregar parámetros de salida paginacionModel.ListaRecords = listaReporte; paginacionModel.NumeroPaginas = parametros.Get <int>("@TotalPaginas"); paginacionModel.TotalRecords = parametros.Get <int>("@TotalRecords"); } catch (Exception e) { throw new Exception("No se pudo ejecutar el stored procedure", e); } finally { factoryConnection.CloseConnection(); } return(paginacionModel); }
public async Task <PaginacionModel> DevolverPaginancion( string storeProcedure, int numeroPagina, int cantidadElementos, IDictionary <string, object> parametrosFiltro, string ordenamientoColumna) { PaginacionModel paginacionModel = new PaginacionModel(); List <IDictionary <string, object> > ListaReporte = null; int totalRecords = 0; int totalPaginas = 0; try { var connection = _factoryConnection.GetConnection(); DynamicParameters parametros = new DynamicParameters(); foreach (var param in parametrosFiltro) { parametros.Add("@" + param.Key, param.Value); } parametros.Add("@NumeroPagina", numeroPagina); parametros.Add("@CantidadElementos", cantidadElementos); parametros.Add("@Ordenamiento", ordenamientoColumna); parametros.Add("@TotalRecords", totalRecords, DbType.Int32, ParameterDirection.Output); parametros.Add("@TotalPaginas", totalPaginas, DbType.Int32, ParameterDirection.Output); var result = await connection.QueryAsync(storeProcedure, parametros, commandType : CommandType.StoredProcedure); ListaReporte = result.Select(x => (IDictionary <string, object>)x).ToList(); paginacionModel.ListaRecords = ListaReporte; paginacionModel.NumeroPaginas = parametros.Get <int>("@TotalPaginas"); paginacionModel.TotalRecords = parametros.Get <int>("@TotalRecords"); } catch (System.Exception) { throw new Exception("No se pudo ejecutar el procedimiento almacenado"); } finally{ _factoryConnection.CloseConnection(); } return(paginacionModel); }
public async Task <PaginacionModel> DevolverPaginacion(string storeProcedure, int numeroPagina, int cantidadElementos, IDictionary <string, object> parametrosFiltro, string ordenamientoColumnas) { // nueva paginacio vacia PaginacionModel paginacionModel = new PaginacionModel(); // datos a guardar desde la DB List <IDictionary <string, object> > listaReporte = null; int totalRecords = 0; int totalPaginas = 0; try { var conexion = this._factoryConnection.GetConnection(); // Parametros de entrada. parametros para saber exactamente ue devolver. DynamicParameters parametros = new DynamicParameters(); foreach (var param in parametrosFiltro) { // se agregan cada paramtro y su valor respectivo parametros.Add("@" + param.Key, param.Value); } // parametros de entrada. Detectar ue se debe devolver parametros.Add("@NumeroPagina", numeroPagina); parametros.Add("@CantidadElementos", cantidadElementos); parametros.Add("@Ordenamiento", ordenamientoColumnas); // Parametros de Salida. Se agrega el nombre del dato, el valor del dato, el tipo del dato y se identifia si se Input u Output. parametros.Add("@TotalRecords", totalRecords, DbType.Int32, ParameterDirection.Output); parametros.Add("@TotalPaginas", totalPaginas, DbType.Int32, ParameterDirection.Output); // obtener los datos mendiante procedimiento almacenado var result = await conexion.QueryAsync(storeProcedure, null, commandType : CommandType.StoredProcedure); // convertir cada dato en "result" a objetos de tipo IDictionary listaReporte = result.Select(x => (IDictionary <string, object>)x).ToList(); // reasignar la pagina como una nueva pagina con los datos de paginas anteriores paginacionModel.ListaRecords = listaReporte; paginacionModel.NumeroPaginas = parametros.Get <int>("@TotalPaginas"); paginacionModel.TotalRecords = parametros.Get <int>("@TotalRecords"); } catch (Exception ex) { throw new Exception("No se pudo devolver la paginacion - procedimiento almacenadi - ", ex); } finally { this._factoryConnection.CloseConnection(); } // se devuelve una instancia con los datos ya procesados return(paginacionModel); }
public async Task <PaginacionModel> devolverPaginacion(string storeProcedure, int numeroPagina, int cantidadElemento, IDictionary <string, object> parametrosFiltros, string ordenamientoColumna) { PaginacionModel paginacion = new PaginacionModel(); List <IDictionary <string, object> > listaReporte = null; int totalRegistro = 0; int totalPaginas = 0; try { var connection = this.factoriConexion.GetConnection(); DynamicParameters parametros = new DynamicParameters(); foreach (var param in parametrosFiltros) { parametros.Add("@" + param.Key, param.Value); } parametros.Add("@NumeroPagina", numeroPagina); parametros.Add("@CantidadElementos", cantidadElemento); parametros.Add("@Ordenamiento", ordenamientoColumna); parametros.Add("@TotalRegistros", totalRegistro, DbType.Int32, ParameterDirection.Output); parametros.Add("@TotalPaginas", totalPaginas, DbType.Int32, ParameterDirection.Output); var result = await connection.QueryAsync(storeProcedure, parametros, commandType : CommandType.StoredProcedure); listaReporte = result.Select(x => (IDictionary <string, object>)x).ToList(); paginacion.ListadeRegistro = listaReporte; paginacion.NumeroPagina = parametros.Get <int>("@TotalPaginas"); paginacion.TotalRegistro = parametros.Get <int>("@TotalRegistros"); } catch (Exception e) { throw new Exception("No se pudo Ejecutar el SP", e); }finally { this.factoriConexion.CloseConexion(); } return(paginacion); }
public async Task <PaginacionModel> devolverPaginacion(string nombreProcedimientoAlmacenado, int numeroPagina, int cantidadElementos, IDictionary <string, object> parametrosFiltro, string ordenamiento) { PaginacionModel paginacionModel = new PaginacionModel(); try { var cnx = factoryConnection.GetConnection(); // * Parametros DynamicParameters parameteros = new DynamicParameters(); // ? Parametros de entrada // ! Filtros foreach (var param in parametrosFiltro) { parameteros.Add("@" + param.Key, param.Value); } parameteros.Add("@NumeroPagina", numeroPagina); parameteros.Add("@CantidadElementos", cantidadElementos); parameteros.Add("@Ordenamiento", ordenamiento); // ? Parametros de Salida parameteros.Add("@TotalRegistros", null, DbType.Int32, ParameterDirection.Output); parameteros.Add("@CantidadPaginas", null, DbType.Int32, ParameterDirection.Output); var resultado = await cnx.QueryAsync(nombreProcedimientoAlmacenado, parameteros, commandType : CommandType.StoredProcedure); paginacionModel.ListaRegistros = resultado.Select(x => (IDictionary <string, object>)x).ToList(); paginacionModel.TotalRegistros = parameteros.Get <int>("TotalRegistros"); paginacionModel.CantidadPaginas = parameteros.Get <int>("CantidadPaginas"); return(paginacionModel); } catch (Exception e) { throw new Exception("No se puedo ejecutar el procedimiento almacenado", e); } finally { factoryConnection.CloseConnection(); } }