示例#1
0
        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);
        }
示例#2
0
        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);
        }