private void Get_Est_FenologiaxSemanas() { int Count = 0; DB_EXT_Seguimiento Seg_ = new DB_EXT_Seguimiento(); DataTable DT_GetRepF = new DataTable(); DT_GetRepF = Seg_.DB_GET_REP_EST_FENOLOGICO(); //cabeceras de reporte //t2.Id_Usuario, t2.Reporte_Fecha_Inicio, t2.Reporte_Fecha_Fin, t2.Id_Regional, t2.Programa, t2.PromedioAvanceCosecha List <EXT_Seguimiento_Cultivo_Segun_Fase_Fenologica> ColGrafica = new List <EXT_Seguimiento_Cultivo_Segun_Fase_Fenologica>(); List <EXT_Seguimiento_Cultivo_Segun_Fase_Fenologica> ColGraficaFinal = new List <EXT_Seguimiento_Cultivo_Segun_Fase_Fenologica>(); foreach (DataRow row in DT_GetRepF.Rows) { EXT_Seguimiento_Cultivo_Segun_Fase_Fenologica ObjGrafico = new EXT_Seguimiento_Cultivo_Segun_Fase_Fenologica(); ObjGrafico.Id_Usuario = row["Id_Usuario"].ToString(); ObjGrafico.Reporte_Fecha_Inicio = Convert.ToDateTime(row["Reporte_Fecha_Inicio"].ToString()); ObjGrafico.Reporte_Fecha_Fin = Convert.ToDateTime(row["Reporte_Fecha_Fin"].ToString()); ObjGrafico.Id_Regional = Convert.ToInt32(row["Id_Regional"].ToString()); ObjGrafico.Programa = row["Programa"].ToString(); ObjGrafico.PromedioAvanceCosecha = Convert.ToDecimal(row["PromedioAvanceCosecha"].ToString()); ColGrafica.Add(ObjGrafico); } ////**>>PRUEBA DE AMPLIACION EN REGIONALES lrojas:30/11/2016 DB_Regional r_ = new DB_Regional(); List <EXT_Seguimiento_Cultivo_Segun_Fase_Fenologica> ColGraficaFinalConAmpliaciones = new List <EXT_Seguimiento_Cultivo_Segun_Fase_Fenologica>(); List <Regional> ColAmpliaciones = new List <Regional>(); if (DDLRegional.SelectedValue != "0") { List <Regional> ColRegionales = r_.DB_Desplegar_REGIONAL(); ColAmpliaciones = ColRegionales.Where(x => x.IdRegional_Padre == Convert.ToInt32(DDLRegional.SelectedValue) || x.Id_Regional == Convert.ToInt32(DDLRegional.SelectedValue)).ToList(); foreach (Regional reg in ColAmpliaciones) { foreach (EXT_Seguimiento_Cultivo_Segun_Fase_Fenologica res in ColGrafica) { EXT_Seguimiento_Cultivo_Segun_Fase_Fenologica ObjSeg = new EXT_Seguimiento_Cultivo_Segun_Fase_Fenologica(); if (res.Id_Regional == reg.Id_Regional) { ColGraficaFinalConAmpliaciones.Add(res); } } } } ////**>> //*>por defector carga todo lrojas:30/11/2016 if (ColAmpliaciones.Count > 1) { ColGraficaFinal = ColGraficaFinalConAmpliaciones.Where(x => x.PromedioAvanceCosecha > 0).ToList(); } else { ColGraficaFinal = ColGrafica.Where(x => x.PromedioAvanceCosecha > 0).ToList();//OLD } //*> //ColGraficaFinal = ColGrafica.Where(x=>x.PromedioAvanceCosecha > 0).ToList();//OLD //*>*apliacacion de filtros segun seleccion lrojas:30/11/2016 if (DDLRegional.SelectedValue != "0") { if (DDLPrograma.SelectedValue != "0") { if (ColAmpliaciones.Count > 1)// si existen ampliaciones de Regionales se realiza filtro a ColGraficaFinalConAmpliaciones { ColGraficaFinal = ColGraficaFinalConAmpliaciones.Where(x => x.Programa == DDLPrograma.SelectedValue && x.PromedioAvanceCosecha > 0).ToList(); } else// si no existen ampliaciones de regionales se realiza un filtro a ColGrafica { ColGraficaFinal = ColGrafica.Where(x => x.Id_Regional == Convert.ToInt32(DDLRegional.SelectedValue) && x.Programa == DDLPrograma.SelectedValue && x.PromedioAvanceCosecha > 0).ToList();//old } } else { if (ColAmpliaciones.Count > 1) { ColGraficaFinal = ColGraficaFinalConAmpliaciones.Where(x => x.PromedioAvanceCosecha > 0).ToList(); } else { ColGraficaFinal = ColGrafica.Where(x => x.Id_Regional == Convert.ToInt32(DDLRegional.SelectedValue) && x.PromedioAvanceCosecha > 0).ToList();//old } } } else { if (DDLPrograma.SelectedValue != "0") { ColGraficaFinal = ColGrafica.Where(x => x.Programa == DDLPrograma.SelectedValue && x.PromedioAvanceCosecha > 0).ToList(); } } //*>* var distinctRows = (from DataRow dRow in DT_GetRepF.Rows where (decimal)dRow["PromedioAvanceCosecha"] > 0 select new { col1 = dRow["Reporte_Fecha_Inicio"], col2 = dRow["Reporte_Fecha_Fin"] }).Distinct(); //** //var distinctRows = (from DataRow dRow in DT_GetRepF.Rows // select new { col1 = dRow["Reporte_Fecha_Inicio"], col2 = dRow["Reporte_Fecha_Fin"] }).Distinct(); List <EXT_Seguimiento_Cultivo_Segun_Fase_Fenologica> ColGraficaFiltrada = new List <EXT_Seguimiento_Cultivo_Segun_Fase_Fenologica>(); //var ColGraficaFiltrada23 = ColGrafica.GroupBy(x => x.Reporte_Fecha_Inicio).Select(lg => new // { // Owner = lg.Key, // Boxes = lg.Count(), // TotalWeight = lg.Sum(w => w.PromedioAvanceCosecha), // TotalVolume = lg.Sum(w => w.PromedioAvanceCosecha) // }); var distinctRowsAsc = distinctRows.OrderBy(x => x.col1); Dictionary <string, decimal> d_totales = new Dictionary <string, decimal>(); //int indexsemana = 0; ddlSemanas.Items.Clear(); foreach (var rowfechas in distinctRowsAsc) { Count++; string value1 = rowfechas.col1.ToString(); string value2 = rowfechas.col2.ToString(); //var ww = (from DataRow dRow in DT_GetRepF.Rows // select new { col1 = dRow["Reporte_Fecha_Inicio"], col2 = dRow["Reporte_Fecha_Fin"] }).Distinct(); ColGraficaFiltrada = ColGraficaFinal.Where(x => x.Reporte_Fecha_Inicio == Convert.ToDateTime(value1) && x.Reporte_Fecha_Fin == Convert.ToDateTime(value2)).ToList(); decimal sum = Convert.ToDecimal(ColGraficaFiltrada.Sum(x => x.PromedioAvanceCosecha).ToString()); int cantidad = ColGraficaFiltrada.Count(); decimal total = 0; if (cantidad != 0) { total = sum / cantidad; } d_totales.Add("Semana" + Count, total); //*** llenamos las semanas //int isaux = indexsemana + 1; string item = "Semana " + Count + "(del " + Convert.ToDateTime(value1).ToShortDateString() + " al " + Convert.ToDateTime(value2).ToShortDateString() + ")"; ddlSemanas.Items.Insert(Count - 1, new ListItem(item, "0", true)); //indexsemana++; } //foreach (KeyValuePair<string, decimal> pair in d_totales) //{ // Console.WriteLine("{0}, {1}", pair.Key, pair.Value); //} Dic_Totales = d_totales; decimal[] arrayProm_Av_Cocecha = new decimal[12]; //arrayProm_Av_Cocecha[0] = "Socrates"; //arrayProm_Av_Cocecha[1] = "Plato"; int Count2 = -1; foreach (KeyValuePair <string, decimal> pair in d_totales) { Count2++; //arrayProm_Av_Cocecha[Count2] = pair.Value; string val = string.Format("{0:n2}", (Math.Truncate(pair.Value * 100) / 100)); arrayProm_Av_Cocecha[Count2] = Convert.ToDecimal(val); //arrayProm_Av_Cocecha[1] = "Plato"; // Console.WriteLine("{0}, {1}", pair.Key, pair.Value); } //for (int i = 0; i >= arrayProm_Av_Cocecha.Count() - 1; i++) //{ // var item = arrayProm_Av_Cocecha.ElementAt(i); // var itemKey = item.Key; // var itemValue = item.Value; //} //t2.Id_Usuario, t2.Reporte_Fecha_Inicio, t2.Reporte_Fecha_Fin, t2.Id_Regional, t2.Programa, t2.PromedioAvanceCosecha //DDLRegional.DataSource = ColGrafica; //DDLRegional.DataValueField = "Id_Usuario"; //DDLRegional.DataTextField = "Id_Usuario" + "|" + "Id_Regional" + "|" + "Programa" + "|" + "PromedioAvanceCosecha"; //DDLRegional.DataBind(); ddlDatosGrafica.Items.Clear(); DB_Regional reg_a = new DB_Regional(); List <Regional> Lista = reg_a.DB_Desplegar_REGIONAL(); //ddlDatosGrafica.Items.Insert(0, new ListItem("Usuario|Regional|Programa|PromedioAvanceCosecha", "0", true)); List <EXT_Seguimiento_Cultivo_Segun_Fase_Fenologica> ColGraficaFinalAsc = new List <EXT_Seguimiento_Cultivo_Segun_Fase_Fenologica>(); ColGraficaFinalAsc = ColGraficaFinal.OrderBy(x => x.Reporte_Fecha_Inicio).ToList(); //**llenamos ddlDatosGrafica, el detalle para saber q valores carga en el grafico foreach (EXT_Seguimiento_Cultivo_Segun_Fase_Fenologica res in ColGraficaFinalAsc) { int index = 0; string regional = string.Empty; if (Lista.Count != 0) { regional = Lista.Where(x => x.Id_Regional == res.Id_Regional).FirstOrDefault().Nombre; } else { regional = res.Id_Regional.ToString(); } string item = res.Id_Usuario + " | " + regional + " | " + res.Programa + " | " + res.PromedioAvanceCosecha + " | " + res.Reporte_Fecha_Inicio.ToShortDateString() + " al " + res.Reporte_Fecha_Fin.ToShortDateString(); //DDLRegional.Items.Insert(index, item); ddlDatosGrafica.Items.Insert(index, new ListItem(item, "0", true)); } //foreach (KeyValuePair<string, decimal> pair in d_totales) //{ // Count2++; // //arrayProm_Av_Cocecha[Count2] = pair.Value; // string val = string.Format("{0:n2}", (Math.Truncate(pair.Value * 100) / 100)); // arrayProm_Av_Cocecha[Count2] = Convert.ToDecimal(val); // //arrayProm_Av_Cocecha[1] = "Plato"; // // Console.WriteLine("{0}, {1}", pair.Key, pair.Value); //} string ruta = "../Viaticos/repEFGrafico.aspx?s1=" + arrayProm_Av_Cocecha[0].ToString() + "&s2=" + arrayProm_Av_Cocecha[1].ToString() + "&s3=" + arrayProm_Av_Cocecha[2].ToString() + "&s4=" + arrayProm_Av_Cocecha[3].ToString() + "&s5=" + arrayProm_Av_Cocecha[4].ToString() + "&s6=" + arrayProm_Av_Cocecha[5].ToString() + "&s7=" + arrayProm_Av_Cocecha[6].ToString() + "&s8=" + arrayProm_Av_Cocecha[7].ToString() + "&s9=" + arrayProm_Av_Cocecha[8].ToString() + "&s10=" + arrayProm_Av_Cocecha[9].ToString() + "&s11=" + arrayProm_Av_Cocecha[10].ToString() + "&s12=" + arrayProm_Av_Cocecha[11].ToString(); iframe1.Attributes.Add("src", ruta); }