public Chart GetDataObjeto(List <FiltroSeleccionado> filtros, int clienteId, int objetoId, int numeroPagina, int usuarioConsultaId, int tamanioPagina) { Chart chart = null; ReportingObjeto obj = GetObjeto(objetoId); chart = GetTableData(filtros, clienteId, objetoId, numeroPagina, usuarioConsultaId, tamanioPagina); chart.Tipo = obj.TipoChart; return(chart); }
public Chart GetTableData(List <FiltroSeleccionado> filtros, int clienteId, int objetoId, int numeroPagina, int usuarioConsultaId, int tamanioPagina) { TableChart chart = new TableChart(); ReportingObjeto obj = GetObjeto(objetoId); DataTable dtfiltros = new DataTable(); dtfiltros.Columns.Add(new DataColumn("IdFiltro", typeof(string))); dtfiltros.Columns.Add(new DataColumn("Valores", typeof(string))); using (SqlConnection cn = new SqlConnection((new RepContext()).Database.Connection.ConnectionString.ToString())) { SqlCommand cmd = new SqlCommand(obj.SpDatos, cn); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandTimeout = 240; cmd.Parameters.Add("@IdCliente", SqlDbType.Int).Value = clienteId; if (filtros != null) { foreach (FiltroSeleccionado f in filtros) { if (f.Valores != null) { DataRow newRow = dtfiltros.NewRow(); newRow[0] = f.Filtro; newRow[1] = string.Join(",", f.Valores); dtfiltros.Rows.Add(newRow); } } } cmd.Parameters.Add("@Filtros", SqlDbType.Structured).Value = dtfiltros; cmd.Parameters.Add("@NumeroDePagina", SqlDbType.Int).Value = numeroPagina; cmd.Parameters.Add("@Lenguaje", SqlDbType.VarChar).Value = System.Threading.Thread.CurrentThread.CurrentCulture.Name; cmd.Parameters.Add("@IdUsuarioConsulta", SqlDbType.Int).Value = usuarioConsultaId; cmd.Parameters.Add("@TamañoPagina", SqlDbType.Int).Value = tamanioPagina; cn.Open(); SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds); if (ds == null) { return(chart); } if (ds.Tables.Count != 3 && obj.TipoChart != TipoChart.ClassicTable) { return(chart); } //Cantidad de paginas //si no existe nada... (solucion "temporal?" para los T9 /20/25/30 Pivoteados que no traen nada o no tienen un manejo adecuado para el caso vacio if (ds.Tables.Count == 0) { chart.pages = 0; return(chart); } DataTable dt = ds.Tables[0]; if (dt.Rows.Count <= 0) { return(chart); } if (obj.TipoChart != TipoChart.ClassicTable) { chart.pages = int.Parse(dt.Rows[0][0].ToString()); //Configuracion de columnas dt = ds.Tables[1]; foreach (DataRow r in dt.Rows) { chart.Columns.Add(new TableChartColumn() { name = r["name"].ToString(), title = r["title"].ToString(), width = int.Parse(r["width"].ToString()) }); } //Datos dt = ds.Tables[2]; if (dt.Rows.Count == 0) { chart.pages = 0; return(chart); } } List <Dictionary <string, object> > parentRow = new List <Dictionary <string, object> >(); Dictionary <string, object> childRow; foreach (DataRow row in dt.Rows) { childRow = new Dictionary <string, object>(); foreach (DataColumn col in dt.Columns) { childRow.Add(col.Caption, row[col].ToString()); } parentRow.Add(childRow); } chart.Valores = parentRow; } return(chart); }