private void btnCalcular_Click(object sender, EventArgs e) { a = float.Parse(txtA.Text); if (a == 0) { TablaGrafico.Refresh(); Ejes(); Pen ObjPen = new Pen(Color.Blue); PointF[] P = new PointF[1081]; Funcion(P); mGraph.DrawCurve(ObjPen, P); lblMensaje.Text = "Grafica el eje X"; } else { if (a > 0) { TablaGrafico.Refresh(); Ejes(); Pen ObjPen = new Pen(Color.Blue); PointF[] P = new PointF[1081]; Funcion(P); mGraph.DrawCurve(ObjPen, P); lblMensaje.Text = "Gráfica Real"; } else { TablaGrafico.Refresh(); Ejes(); Pen ObjPen = new Pen(Color.Blue); PointF[] P = new PointF[1081]; Funcion(P); mGraph.DrawCurve(ObjPen, P); lblMensaje.Text = "Gráfica Ivertida"; } } }
/// <summary> /// Generars the datos grafico. /// </summary> private void GenerarDatosGrafico() { TablaGrafico = new List<TablaGrafico>(); TablaGrafico tabla3 = new TablaGrafico(); tabla3.listaCuerpo = new List<List<string>>(); List<string> encabezado3 = new List<string>(); List<string> fila3 = new List<string>(); var fechaMin = from p in listaReporte group p by p.alumno into g select new { Alumno = g.Key, Fecha = g.Min(p => p.fecha) }; var fechaMax = from p in listaReporte group p by p.alumno into g select new { Alumno = g.Key, Fecha = g.Max(p => p.fecha) }; //TablaGrafico.Add("- Periodo de notas: " + fechaMin.First().Fecha.ToShortDateString() + " - " + fechaMax.First().Fecha.ToShortDateString()); tabla3.titulo = "Periodo Analizado " + fechaMin.First().Fecha.ToShortDateString() + " - " + fechaMax.First().Fecha.ToShortDateString(); var cantAlumnos = from p in listaReporte group p by p.alumno into g select new { Alumno = g.Key, Cantidad = g.Count() }; //TablaGrafico.Add("- Cantidad de Alumnos analiza2: " + cantAlumnos.Count().ToString()); encabezado3.Add("Cantidad de Alumnos"); fila3.Add(cantAlumnos.Count().ToString()); //TablaGrafico.Add("- Cantidad de Calificaciones: " + listaReporte.Count.ToString()); encabezado3.Add("Cantidad de Calificaciones"); fila3.Add(listaReporte.Count().ToString()); tabla3.listaEncabezados = encabezado3; tabla3.listaCuerpo.Add(fila3); TablaGrafico.Add(tabla3); TablaGrafico tabla2 = new TablaGrafico(); tabla2.listaCuerpo = new List<List<string>>(); List<string> encabezado2 = new List<string>(); List<List<string>> filasTabla2 = new List<List<string>>(); List<string> fila2 = new List<string>(); //TablaGrafico.Add("- Desviacion Estandar por materia: "); tabla2.titulo = "Desviación Estandar por Asignatura"; encabezado2.Add("Asignatura"); encabezado2.Add("Promedio"); encabezado2.Add("Desviación Estándar"); double sumaNotas, promedio, desvStd, dif, cociente, sumaDifCuad = 0; var serie = new List<RptCalificacionesAlumnoPeriodo>(); foreach (var item in listaAsignatura) { promedio = 0; cociente = 0; desvStd = 0; sumaNotas = 0; dif = 0; sumaDifCuad = 0; var listaParcial = listaReporte.FindAll(p => p.asignatura == item.nombre); if (listaParcial.Count > 0) { foreach (var nota in listaParcial) { sumaNotas += Convert.ToInt16(nota.calificacion); } promedio = sumaNotas / listaParcial.Count; foreach (var nota in listaParcial) { dif = (Convert.ToInt32(nota.calificacion) - promedio); sumaDifCuad += Math.Pow(dif, 2); } // Revisar la formula de desviacion standard //cociente = (sumaDifCuad / (listaParcial.Count-1)); cociente = (sumaDifCuad / (listaParcial.Count)); desvStd = Math.Sqrt(cociente); //TablaGrafico.Add(item.nombre + " Promedio: " + promedio.ToString("#.##") + " , Desviacion Standard: " + desvStd.ToString("#.##")); fila2 = new List<string>(); fila2.Add(item.nombre); fila2.Add(promedio.ToString("#.##")); fila2.Add(desvStd.ToString("#.##")); filasTabla2.Add(fila2); } } tabla2.listaEncabezados = encabezado2; tabla2.listaCuerpo = filasTabla2; TablaGrafico.Add(tabla2); TablaGrafico tabla4 = new TablaGrafico(); tabla4.listaCuerpo = new List<List<string>>(); List<string> encabezado4 = new List<string>(); List<List<string>> filasTabla4 = new List<List<string>>(); List<string> fila4 = new List<string>(); if (Convert.ToInt32(ddlAsignatura.SelectedIndex) < 0) { var topPromedio = (from p in listaReporte group p by p.asignatura into g orderby g.Average(p => Convert.ToInt32(p.calificacion)) descending select new { Asignatura = g.Key, Promedio = g.Average(p => Convert.ToInt32(p.calificacion)), Cantidad = g.Count() }).Distinct().Take(3); if (topPromedio.Count() > 1) { //TablaGrafico.Add("- Top 3 Materias con mejor desempeño:"); tabla4.titulo = "Top Asignaturas con mejor desempeño"; encabezado4.Add("Asignatura"); encabezado4.Add("Promedio"); encabezado4.Add("Cantidad de Evaluaciones"); tabla4.listaEncabezados = encabezado4; foreach (var item in topPromedio) { //TablaGrafico.Add(item.Asignatura + " - Promedio: " + item.Promedio.ToString("#.##") + " - Cantidad de Evaluaciones: " + item.Cantidad.ToString()); fila4 = new List<string>(); fila4.Add(item.Asignatura); fila4.Add(item.Promedio.ToString("#.##")); fila4.Add(item.Cantidad.ToString()); filasTabla4.Add(fila4); } tabla4.listaEncabezados = encabezado4; tabla4.listaCuerpo = filasTabla4; TablaGrafico.Add(tabla4); } var worstPromedio = (from p in listaReporte group p by p.asignatura into g orderby g.Average(p => Convert.ToInt32(p.calificacion)) ascending select new { Asignatura = g.Key, Promedio = g.Average(p => Convert.ToInt32(p.calificacion)), Cantidad = g.Count() }).Distinct().Take(3); if (worstPromedio.Count() > 1) { TablaGrafico tabla5 = new TablaGrafico(); tabla5.listaCuerpo = new List<List<string>>(); List<string> encabezado5 = new List<string>(); List<List<string>> filasTabla5 = new List<List<string>>(); List<string> fila5 = new List<string>(); tabla5.titulo = "Top Asignaturas con bajo desempeño"; encabezado5.Add("Asignatura"); encabezado5.Add("Promedio"); encabezado5.Add("Cantidad de Evaluaciones"); //TablaGrafico.Add("- Top 3 Materias con bajo desempeño:"); foreach (var item in worstPromedio) { //TablaGrafico.Add(item.Asignatura + " - Promedio: " + item.Promedio.ToString("#.##") + " - Cantidad de Evaluaciones: " + item.Cantidad.ToString()); fila5 = new List<string>(); fila5.Add(item.Asignatura); fila5.Add(item.Promedio.ToString("#.##")); fila5.Add(item.Cantidad.ToString()); filasTabla5.Add(fila5); } tabla5.listaEncabezados = encabezado5; tabla5.listaCuerpo = filasTabla5; TablaGrafico.Add(tabla5); } } if (Convert.ToInt32(ddlAlumno.SelectedValue) < 0) { var worstAlumnos = (from p in listaReporte group p by p.alumno into g orderby g.Average(p => Convert.ToInt32(p.calificacion)) ascending select new { Alumno = g.Key, Promedio = g.Average(p => Convert.ToInt32(p.calificacion)) }).Distinct().Take(3); if (worstAlumnos.Count() > 1) { TablaGrafico tabla6 = new TablaGrafico(); tabla6.listaCuerpo = new List<List<string>>(); List<string> encabezado6 = new List<string>(); List<List<string>> filasTabla6 = new List<List<string>>(); List<string> fila6 = new List<string>(); tabla6.titulo = "Top Alumnos a observar"; encabezado6.Add("Alumno"); encabezado6.Add("Promedio General"); //TablaGrafico.Add("- Top 3 de Alumnos a observar:"); foreach (var item in worstAlumnos) { //TablaGrafico.Add(item.Alumno + " - Promedio General: " + item.Promedio.ToString("#.##")); fila6 = new List<string>(); fila6.Add(item.Alumno); fila6.Add(item.Promedio.ToString("#.##")); filasTabla6.Add(fila6); } tabla6.listaEncabezados = encabezado6; tabla6.listaCuerpo = filasTabla6; TablaGrafico.Add(tabla6); } } if (Convert.ToInt32(ddlAlumno.SelectedValue) < 0) { var worstAlumnos = (from p in listaReporte group p by p.alumno into g orderby g.Average(p => Convert.ToInt32(p.calificacion)) descending select new { Alumno = g.Key, Promedio = g.Average(p => Convert.ToInt32(p.calificacion)) }).Distinct().Take(3); if (worstAlumnos.Count() > 1) { TablaGrafico tabla7 = new TablaGrafico(); tabla7.listaCuerpo = new List<List<string>>(); List<string> encabezado7 = new List<string>(); List<List<string>> filasTabla7 = new List<List<string>>(); List<string> fila7 = new List<string>(); tabla7.titulo = "Top Alumnos con mejores Promedios"; encabezado7.Add("Alumno"); encabezado7.Add("Promedio General"); //TablaGrafico.Add("- Top 3 de Alumnos con mejores notas:"); foreach (var item in worstAlumnos) { //TablaGrafico.Add(item.Alumno + " - Promedio General: " + item.Promedio.ToString("#.##")); fila7 = new List<string>(); fila7.Add(item.Alumno); fila7.Add(item.Promedio.ToString("#.##")); filasTabla7.Add(fila7); } tabla7.listaEncabezados = encabezado7; tabla7.listaCuerpo = filasTabla7; TablaGrafico.Add(tabla7); } } }
/// <summary> /// Exportars the informe. /// </summary> private void ExportarInforme() { List<TablaGrafico> listaTabla = new List<TablaGrafico>(); TablaGrafico miItem = new TablaGrafico(); List<miRespuesta> miListaRespuesta = new List<miRespuesta>(); string TmpPath = string.Empty; string nombrePNG = string.Empty; StringBuilder filtros = new StringBuilder(); filtros.AppendLine("Curso: " + encuestaSesion.curso.curso.nombre); if (!string.IsNullOrEmpty(encuestaSesion.asignatura.asignatura.nombre)) filtros.AppendLine("Asignatura: " + encuestaSesion.asignatura.asignatura.nombre); filtros.AppendLine("Fecha de Lanzamiento: " + Convert.ToDateTime(encuestaSesion.fechaLanzamiento).ToShortDateString()); if (encuestaSesion.fechaVencimiento.HasValue) filtros.AppendLine("Fecha de Expiración: " + Convert.ToDateTime(encuestaSesion.fechaVencimiento).ToShortDateString()); BLEncuesta objBLEncuesta = new BLEncuesta(); int cantidad = 0; List<DTRol> listaRoles = null; foreach (ListItem item in lstRoles.Items) if (item.Selected) cantidad++; if (cantidad > 0 && cantidad != lstRoles.Items.Count) { listaRoles = new List<DTRol>(); foreach (ListItem item in lstRoles.Items) if (item.Selected) { listaRoles.Add(new DTRol() { Nombre = item.Text }); } } EncuestaAnalisis miAnalisis = objBLEncuesta.GetEncuestaAnalisis(encuestaSesion, listaRoles); if (miAnalisis != null) { filtros.AppendLine("Encuestas Enviadas: " + miAnalisis.nroLanzadas.ToString()); filtros.AppendLine("Encuestas Respondidas: " + miAnalisis.nroRespondidas.ToString()); if (Convert.ToDateTime(encuestaSesion.fechaVencimiento).Subtract(DateTime.Today).Days > 0) filtros.AppendLine("Encuestas Pendientes: " + miAnalisis.nroPendientes.ToString()); else filtros.AppendLine("Encuestas Expiradas: " + miAnalisis.nroExpiradas.ToString()); } filtros.AppendLine("Roles: "); if (cantidad == 0 || cantidad == lstRoles.Items.Count) foreach (ListItem item in lstRoles.Items) filtros.AppendLine(" * " + item.Text); else foreach (ListItem item in lstRoles.Items) if (item.Selected) filtros.AppendLine(" * " + item.Text); foreach (RespuestaPreguntaAnalisis item in listaRespuestaNumericas) { miItem = new TablaGrafico(); miListaRespuesta = ObtenerRespuestas(item); miItem.titulo = item.textoPregunta; miItem.listaEncabezados = new List<string>(); miItem.listaEncabezados.Add("Respuesta"); miItem.listaEncabezados.Add("Porcentaje"); miItem.listaCuerpo = new List<List<string>>(); decimal totales = miListaRespuesta.Sum(od => od.cantidad); Chart miGrafico = new Chart { Width = 800, Height = 450, RenderType = RenderType.ImageTag, AntiAliasing = AntiAliasingStyles.All, TextAntiAliasingQuality = TextAntiAliasingQuality.High, BorderlineDashStyle = ChartDashStyle.Solid, BackSecondaryColor = Color.White, Palette = ChartColorPalette.BrightPastel, BackGradientStyle = GradientStyle.TopBottom }; //miGrafico.Titles.Add(item.textoPregunta); //miGrafico.Titles[0].Font = new Font("Arial", 16f); miGrafico.Legends.Add(""); miGrafico.Legends[0].Alignment = StringAlignment.Center; miGrafico.Legends[0].IsTextAutoFit = false; miGrafico.Legends[0].BorderWidth = 1; miGrafico.Legends[0].BorderDashStyle = ChartDashStyle.Solid; miGrafico.Legends[0].ShadowOffset = 3; miGrafico.Legends[0].Name = "Default"; miGrafico.Legends[0].BackColor = Color.Transparent; miGrafico.Legends[0].BorderColor = Color.FromArgb(26, 59, 105); miGrafico.Legends[0].Docking = Docking.Bottom; miGrafico.ChartAreas.Add(""); miGrafico.ChartAreas[0].AxisX.Title = "Respuestas"; miGrafico.ChartAreas[0].AxisY.Title = "Porcentaje"; miGrafico.ChartAreas[0].AxisX.TitleFont = new Font("Arial", 12f); miGrafico.ChartAreas[0].AxisY.TitleFont = new Font("Arial", 12f); miGrafico.ChartAreas[0].AxisX.LabelStyle.Font = new Font("Arial", 10f); miGrafico.ChartAreas[0].AxisX.LabelStyle.Angle = 90; miGrafico.ChartAreas[0].BackColor = Color.Transparent; miGrafico.ChartAreas[0].BorderColor = Color.FromArgb(26, 59, 105); miGrafico.ChartAreas[0].Area3DStyle.Enable3D = true; miGrafico.ChartAreas[0].Area3DStyle.Inclination = 45; miGrafico.Series.Add(""); miGrafico.Series[0].ChartType = SeriesChartType.Pie; miGrafico.Series[0].ShadowOffset = 2; miGrafico.Series[0]["PieLabelStyle"] = "Outside"; miGrafico.Series[0].LegendText = "#VALX: #PERCENT"; foreach (miRespuesta itemRespuesta in miListaRespuesta) { miItem.listaCuerpo.Add(new List<string>() { itemRespuesta.respuesta, Math.Round((itemRespuesta.cantidad / totales * 100), 2).ToString() }); miGrafico.Series[0].Points.AddXY(itemRespuesta.respuesta, Math.Round((itemRespuesta.cantidad / totales * 100), 2)); } TmpPath = System.Configuration.ConfigurationManager.AppSettings["oTmpPath"]; nombrePNG = TmpPath + "\\Grafico_" + Session.SessionID + "_" + encuestaSesion.idEncuesta + "_" + item.idPregunta + ".png"; miGrafico.SaveImage(nombrePNG, ChartImageFormat.Png); miItem.listaPie = new List<string>(); miItem.listaPie.Add(nombrePNG); listaTabla.Add(miItem); } foreach (RespuestaPreguntaAnalisis item in listaRespuestaTextuales) { miItem = new TablaGrafico(); miListaRespuesta = ObtenerRespuestas(item); miItem.titulo = item.textoPregunta; miItem.listaEncabezados = new List<string>(); miItem.listaEncabezados.Add("Análisis"); miItem.listaEncabezados.Add("Resultados"); miItem.listaCuerpo = new List<List<string>>(); miItem.listaCuerpo.Add(new List<string>() { "Respuestas Obtenidas", item.respuestasObtenidas.ToString() }); miItem.listaCuerpo.Add(new List<string>() { "Respuestas Esperadas", item.respuestasEsperadas.ToString() }); miItem.listaCuerpo.Add(new List<string>() { "Porcentaje", item.porcentaje.ToString() }); listaTabla.Add(miItem); } ExportPDF.ExportarGraficoPDF(encuestaSesion.nombreEncuesta, ObjSessionDataUI.ObjDTUsuario.Nombre, filtros.ToString(), string.Empty, listaTabla); }
///// <summary> ///// Generars the datos grafico. ///// </summary> private void GenerarDatosGrafico() { var cantAsignaturas = from p in listaReporteRendimiento group p by p.asignatura into g select new { Asignatura = g.Key, Cantidad = g.Count() }; //TablaGrafico.Add("- Cantidad de Alumnos analizados: " + cantAlumnos.Count().ToString()); //TablaGrafico.Add("- Registros Totales: " + listaReporte.Count.ToString()); TablaGrafico = new List<TablaGrafico>(); TablaGrafico tabla3 = new TablaGrafico(); tabla3.listaCuerpo = new List<List<string>>(); List<string> encabezado3 = new List<string>(); List<string> fila3 = new List<string>(); tabla3.titulo = "Periodos Analizados: \n"; foreach (ListItem item in ddlCicloLectivo.Items) { if (item.Selected) { tabla3.titulo += item.Value + "\n"; } } tabla3.listaEncabezados = encabezado3; tabla3.listaCuerpo.Add(fila3); TablaGrafico.Add(tabla3); //if (!string.IsNullOrEmpty(ddlAsignatura.Value) && Convert.ToInt32(ddlAsignatura.Value) > 0) //{ // #region --[Recorrer Ciclos Lectivos Seleccionados]-- // var Ciclos = (from p in listaReporte // group p by p.ciclolectivo into g // //orderby g.Average(p => Convert.ToDouble(p.promedio)) descending // select new { CicloLectivo = g.Key }).Distinct(); // foreach (var item in Ciclos) // { // TablaGrafico tabla2 = new TablaGrafico(); // tabla2.listaCuerpo = new List<List<string>>(); // List<string> encabezado2 = new List<string>(); // List<List<string>> filasTabla2 = new List<List<string>>(); // List<string> fila2 = new List<string>(); // tabla2.titulo = "Top 3 Materias de Mejor Desempeño " + item.CicloLectivo; // encabezado2.Add("Asignatura"); // encabezado2.Add("Promedio"); // //encabezado2.Add("Ciclo Lectivo"); // var topPromedio = // (from p in listaReporte // where p.ciclolectivo == item.CicloLectivo // group p by p.asignatura into g // orderby g.Average(p => Convert.ToDouble(p.promedio)) descending // select new { Asignatura = g.Key, Promedio = g.Average(p => Convert.ToDouble(p.promedio)) }).Distinct().Take(3); // //TablaGrafico.Add("- Top 3 Materias con mejor desempeño por Ciclo Lectivo:"); // foreach (var materia in topPromedio) // { // //TablaGrafico.Add(item.Asignatura + " - Promedio: " + item.Promedio.ToString()); // fila2 = new List<string>(); // fila2.Add(materia.Asignatura); // fila2.Add(materia.Promedio.ToString("#.00")); // //fila2.Add(item.Text); // filasTabla2.Add(fila2); // } // if (filasTabla2.Count > 0) // { // tabla2.listaEncabezados = encabezado2; // tabla2.listaCuerpo = filasTabla2; // TablaPropiaGrafico.Add(tabla2); // } // TablaGrafico tabla4 = new TablaGrafico(); // tabla4.listaCuerpo = new List<List<string>>(); // List<string> encabezado4 = new List<string>(); // List<List<string>> filasTabla4 = new List<List<string>>(); // List<string> fila4 = new List<string>(); // tabla4.titulo = "Top 3 Materias de Bajo Desempeño " + item.CicloLectivo; // encabezado4.Add("Asignatura"); // encabezado4.Add("Promedio"); // //encabezado4.Add("Ciclo Lectivo"); // var lowPromedio = // (from p in listaReporte // where p.ciclolectivo == item.CicloLectivo // group p by p.asignatura into g // orderby g.Average(p => Convert.ToDouble(p.promedio)) ascending // select new { Asignatura = g.Key, Promedio = g.Average(p => Convert.ToDouble(p.promedio)) }).Distinct().Take(3); // //TablaGrafico.Add("- Top 3 Materias con mejor desempeño por Ciclo Lectivo:"); // foreach (var materia in lowPromedio) // { // //TablaGrafico.Add(item.Asignatura + " - Promedio: " + item.Promedio.ToString()); // fila4 = new List<string>(); // fila4.Add(materia.Asignatura); // fila4.Add(materia.Promedio.ToString("#.00")); // //fila4.Add(item.Text); // filasTabla4.Add(fila4); // } // if (filasTabla4.Count > 0) // { // tabla4.listaEncabezados = encabezado4; // tabla4.listaCuerpo = filasTabla4; // TablaPropiaGrafico.Add(tabla4); // } // } // #endregion //} //else { TablaGrafico tabla2 = new TablaGrafico(); tabla2.listaCuerpo = new List<List<string>>(); List<string> encabezado2 = new List<string>(); List<List<string>> filasTabla2 = new List<List<string>>(); List<string> fila2 = new List<string>(); var Ciclos = (from p in listaReporteRendimiento group p by p.ciclolectivo into g //orderby g.Average(p => Convert.ToDouble(p.promedio)) descending select new { CicloLectivo = g.Key }).Distinct(); var Asignaturas = (from p in listaReporteRendimiento group p by p.asignatura into g //orderby g.Average(p => Convert.ToDouble(p.promedio)) descending select new { Asignatura = g.Key }).Distinct(); tabla2.titulo = "Desempeño Por Ciclo Lectivo "; //encabezado2.Add("Promedio"); encabezado2.Add("Asignatura"); foreach (var item in Ciclos) { encabezado2.Add(item.CicloLectivo); } foreach (var materia in Asignaturas) { fila2 = new List<string>(); fila2.Add(materia.Asignatura); foreach (var item in Ciclos) { //encabezado2.Add(item.CicloLectivo); var Promedio = (from p in listaReporteRendimiento where p.ciclolectivo == item.CicloLectivo && p.asignatura == materia.Asignatura group p by p.asignatura into g //orderby g.Average(p => Convert.ToDouble(p.promedio)) descending select new { Asignatura = g.Key, Promedio = g.Average(p => Convert.ToDouble(p.promedio)) }).Distinct(); foreach (var itemPromedio in Promedio) { fila2.Add(itemPromedio.Promedio.ToString("#.00")); //fila2.Add(item.Text); } if (Promedio.Count() == 0) fila2.Add(string.Empty); } filasTabla2.Add(fila2); } if (filasTabla2.Count > 0) { tabla2.listaEncabezados = encabezado2; tabla2.listaCuerpo = filasTabla2; TablaGrafico.Add(tabla2); } } }
/// <summary> /// Generars the datos grafico. /// </summary> private void GenerarDatosGraficoSanciones() { TablaGrafico = new List<TablaGrafico>(); TablaGrafico tabla3 = new TablaGrafico(); tabla3.listaCuerpo = new List<List<string>>(); List<string> encabezado3 = new List<string>(); List<string> fila3 = new List<string>(); tabla3.titulo = "Periodo Analizado: " + listaReporteSanciones[0].periodo; var cantAlumnos = from p in listaReporteSanciones group p by p.alumno into g select new { Alumno = g.Key, Cantidad = g.Count() }; //TablaGrafico.Add("- Cantidad de Alumnos analizados: " + cantAlumnos.Count().ToString()); //if (listaReporteSanciones.Count() > 0) // TablaGrafico.Add("- Periodo de notas: " + listaReporteSanciones[0].periodo); encabezado3.Add("Cantidad de Alumnos"); fila3.Add(cantAlumnos.Count().ToString()); //TablaGrafico.Add("- Cantidad de Calificaciones: " + listaReporte.Count.ToString()); //encabezado3.Add("Sanciones Totales"); //fila3.Add(listaReporteSanciones.Count().ToString()); tabla3.listaEncabezados = encabezado3; tabla3.listaCuerpo.Add(fila3); TablaGrafico.Add(tabla3); var worstAlumnos = (from p in listaReporteSanciones group p by p.alumno into g orderby g.Sum(p => Convert.ToInt16(p.sanciones)) descending select new { Alumno = g.Key, Sanciones = g.Sum(p => Convert.ToInt16(p.sanciones)) }).Distinct().Take(3); if (worstAlumnos.Count() > 1) { TablaGrafico tabla2 = new TablaGrafico(); tabla2.listaCuerpo = new List<List<string>>(); List<string> encabezado2 = new List<string>(); List<List<string>> filasTabla2 = new List<List<string>>(); List<string> fila2 = new List<string>(); //TablaGrafico.Add("- Desviacion Estandar por materia: "); tabla2.titulo = "Top Alumnos a observar por Cantidad de Sanciones"; encabezado2.Add("Alumno"); encabezado2.Add("Sanciones"); //TablaGrafico.Add("- Top Alumnos a observar por Cantidad de Sanciones:"); foreach (var item in worstAlumnos) { //TablaGrafico.Add("Alumno: " + item.Alumno + " - Cantidad de Sanciones: " + item.Sanciones); fila2 = new List<string>(); fila2.Add(item.Alumno); fila2.Add(item.Sanciones.ToString()); filasTabla2.Add(fila2); } tabla2.listaEncabezados = encabezado2; tabla2.listaCuerpo = filasTabla2; TablaGrafico.Add(tabla2); } var SancionesPorTipo = (from p in listaReporteSanciones group p by p.tipo into g orderby g.Sum(p => Convert.ToInt32(p.sanciones)) descending select new { Tipo = g.Key, Sanciones = g.Sum(p => Convert.ToInt32(p.sanciones)) }).Distinct().Take(3); TablaGrafico tabla4 = new TablaGrafico(); tabla4.listaCuerpo = new List<List<string>>(); List<string> encabezado4 = new List<string>(); List<List<string>> filasTabla4 = new List<List<string>>(); List<string> fila4 = new List<string>(); //TablaGrafico.Add("- Desviacion Estandar por materia: "); tabla4.titulo = "Cantidad de Sanciones según Tipo"; encabezado4.Add("Alumno"); encabezado4.Add("Sanciones"); //TablaGrafico.Add("- Cantidad de Sanciones según Tipo:"); foreach (var item in SancionesPorTipo) { //TablaGrafico.Add("Tipo de Sancion: " + item.Tipo + " - Cantidad de Sanciones: " + item.Sanciones); fila4 = new List<string>(); fila4.Add(item.Tipo); fila4.Add(item.Sanciones.ToString()); filasTabla4.Add(fila4); } tabla4.listaEncabezados = encabezado4; tabla4.listaCuerpo = filasTabla4; TablaGrafico.Add(tabla4); var SancionesPorMotivo = (from p in listaReporteSanciones group p by p.motivo into g orderby g.Sum(p => Convert.ToInt32(p.sanciones)) descending select new { Motivo = g.Key, Sanciones = g.Sum(p => Convert.ToInt32(p.sanciones)) }).Distinct().Take(3); TablaGrafico tabla5 = new TablaGrafico(); tabla5.listaCuerpo = new List<List<string>>(); List<string> encabezado5 = new List<string>(); List<List<string>> filasTabla5 = new List<List<string>>(); List<string> fila5 = new List<string>(); tabla5.titulo = "Cantidad de Sanciones según Motivo"; encabezado5.Add("Motivo"); encabezado5.Add("Cantidad"); //TablaGrafico.Add("- Cantidad de Sanciones según Motivo:"); foreach (var item in SancionesPorMotivo) { //TablaGrafico.Add("Motivo de Sancion: " + item.Motivo + " - Cantidad de Sanciones: " + item.Sanciones); fila5 = new List<string>(); fila5.Add(item.Motivo); fila5.Add(item.Sanciones.ToString()); filasTabla5.Add(fila5); } tabla5.listaEncabezados = encabezado5; tabla5.listaCuerpo = filasTabla5; TablaGrafico.Add(tabla5); var worstAlumnosByMotivo = (from p in listaReporteSanciones group p by new { p.alumno, p.motivo } into g orderby g.Sum(p => Convert.ToInt32(p.sanciones)) descending select new { Alumno = g.Key.alumno, Motivo = g.Key.motivo, Sanciones = g.Sum(p => Convert.ToInt32(p.sanciones)) }).Distinct().Take(3); if (worstAlumnosByMotivo.Count() > 1) { //TablaGrafico.Add("- Top Alumnos a observar por Cantidad y Motivo de Sanciones:"); TablaGrafico tabla6 = new TablaGrafico(); tabla6.listaCuerpo = new List<List<string>>(); List<string> encabezado6 = new List<string>(); List<List<string>> filasTabla6 = new List<List<string>>(); List<string> fila6 = new List<string>(); tabla6.titulo = "Top Alumnos a observar por Cantidad y Motivo de Sanciones"; encabezado6.Add("Alumno"); encabezado6.Add("Motivo"); encabezado6.Add("Cantidad"); foreach (var item in worstAlumnosByMotivo) { //TablaGrafico.Add("Alumno: " + item.Alumno + " Motivo: " + item.Motivo + " - Cantidad de Sanciones: " + item.Sanciones); fila6 = new List<string>(); fila6.Add(item.Alumno); fila6.Add(item.Motivo); fila6.Add(item.Sanciones.ToString()); filasTabla6.Add(fila6); } tabla6.listaEncabezados = encabezado6; tabla6.listaCuerpo = filasTabla6; TablaGrafico.Add(tabla6); } var worstAlumnosByTipo = (from p in listaReporteSanciones group p by new { p.alumno, p.tipo } into g orderby g.Sum(p => Convert.ToInt32(p.sanciones)) descending select new { Alumno = g.Key.alumno, Tipo = g.Key.tipo, Sanciones = g.Sum(p => Convert.ToInt32(p.sanciones)) }).Distinct().Take(3); if (worstAlumnosByTipo.Count() > 1) { //TablaGrafico.Add("- Top Alumnos a observar por Cantidad y Tipo de Sanciones:"); TablaGrafico tabla7 = new TablaGrafico(); tabla7.listaCuerpo = new List<List<string>>(); List<string> encabezado7 = new List<string>(); List<List<string>> filasTabla7 = new List<List<string>>(); List<string> fila7 = new List<string>(); tabla7.titulo = "Top Alumnos a observar por Cantidad y Tipo de Sanciones"; encabezado7.Add("Alumno"); encabezado7.Add("Tipo"); encabezado7.Add("Cantidad"); foreach (var item in worstAlumnosByTipo) { //TablaGrafico.Add("Alumno: " + item.Alumno + " Tipo: " + item.Tipo + " - Cantidad de Sanciones: " + item.Sanciones); fila7 = new List<string>(); fila7.Add(item.Alumno); fila7.Add(item.Tipo); fila7.Add(item.Sanciones.ToString()); filasTabla7.Add(fila7); } tabla7.listaEncabezados = encabezado7; tabla7.listaCuerpo = filasTabla7; TablaGrafico.Add(tabla7); } }
/// <summary> /// Generars the datos grafico. /// </summary> private void GenerarDatosGraficoInasistencias() { TablaGrafico = new List<TablaGrafico>(); TablaGrafico tabla3 = new TablaGrafico(); tabla3.listaCuerpo = new List<List<string>>(); List<string> encabezado3 = new List<string>(); List<string> fila3 = new List<string>(); tabla3.titulo = "Periodo Analizado: " + listaReporteInasistencias[0].periodo; var cantAlumnos = from p in listaReporteInasistencias group p by p.alumno into g select new { Alumno = g.Key, Cantidad = g.Count() }; encabezado3.Add("Cantidad de Alumnos"); fila3.Add(cantAlumnos.Count().ToString()); encabezado3.Add("Inasistencias Totales"); fila3.Add(listaReporteInasistencias.Count().ToString()); tabla3.listaEncabezados = encabezado3; tabla3.listaCuerpo.Add(fila3); TablaGrafico.Add(tabla3); var worstAlumnos = (from p in listaReporteInasistencias group p by p.alumno into g orderby g.Sum(p => Convert.ToDouble(p.inasistencias)) descending select new { Alumno = g.Key, Faltas = g.Sum(p => Convert.ToDouble(p.inasistencias)) }).Distinct().Take(3); if (worstAlumnos.Count() > 1) { TablaGrafico tabla2 = new TablaGrafico(); tabla2.listaCuerpo = new List<List<string>>(); List<string> encabezado2 = new List<string>(); List<List<string>> filasTabla2 = new List<List<string>>(); List<string> fila2 = new List<string>(); tabla2.titulo = "Top Alumnos a observar"; encabezado2.Add("Alumno"); encabezado2.Add("Inasistencias"); foreach (var item in worstAlumnos) { fila2 = new List<string>(); fila2.Add(item.Alumno); fila2.Add(item.Faltas.ToString()); filasTabla2.Add(fila2); } tabla2.listaEncabezados = encabezado2; tabla2.listaCuerpo = filasTabla2; TablaGrafico.Add(tabla2); } var worstAlumnosByMotivo = (from p in listaReporteInasistencias group p by new { p.alumno, p.motivo } into g orderby g.Sum(p => Convert.ToDouble(p.inasistencias)) descending select new { Alumno = g.Key.alumno, Motivo = g.Key.motivo, Faltas = g.Sum(p => Convert.ToDouble(p.inasistencias)) }).Distinct().Take(3); if (worstAlumnosByMotivo.Count() > 1) { TablaGrafico tabla5 = new TablaGrafico(); tabla5.listaCuerpo = new List<List<string>>(); List<string> encabezado5 = new List<string>(); List<List<string>> filasTabla5 = new List<List<string>>(); List<string> fila5 = new List<string>(); tabla5.titulo = "Top Alumnos a observar por Cantidad y Motivo de Inasistencias"; encabezado5.Add("Alumno"); encabezado5.Add("Motivo"); encabezado5.Add("Cantidad"); //TablaGrafico.Add("- Top Alumnos a observar por Cantidad y Motivo de Inasistencias:"); foreach (var item in worstAlumnosByMotivo) { //TablaGrafico.Add("Alumno: " + item.Alumno + " Motivo: " + item.Motivo + " - Cantidad de Inasistencias: " + item.Faltas); fila5 = new List<string>(); fila5.Add(item.Alumno); fila5.Add(item.Motivo); fila5.Add(item.Faltas.ToString()); filasTabla5.Add(fila5); } tabla5.listaEncabezados = encabezado5; tabla5.listaCuerpo = filasTabla5; TablaGrafico.Add(tabla5); } }
/// <summary> /// Generars the datos grafico. /// </summary> private void GenerarDatosGraficoCalificaciones() { TablaGrafico = new List<TablaGrafico>(); TablaGrafico tabla3 = new TablaGrafico(); tabla3.listaCuerpo = new List<List<string>>(); List<string> encabezado3 = new List<string>(); List<string> fila3 = new List<string>(); tabla3.titulo = "Periodo Analizado: " + listaReporte[0].periodo; var cantAlumnos = from p in listaReporte group p by p.alumno into g select new { Alumno = g.Key, Cantidad = g.Count() }; //TablaGrafico.Add("- Cantidad de Alumnos analizados: " + cantAlumnos.Count().ToString()); encabezado3.Add("Cantidad de Alumnos"); fila3.Add(cantAlumnos.Count().ToString()); //TablaGrafico.Add("- Cantidad de Calificaciones: " + listaReporte.Count.ToString()); encabezado3.Add("Cantidad de Calificaciones"); fila3.Add(listaReporte.Count().ToString()); tabla3.listaEncabezados = encabezado3; tabla3.listaCuerpo.Add(fila3); TablaGrafico.Add(tabla3); if (ddlAsignatura.Items.Count == 0 || Convert.ToInt32(ddlAsignatura.SelectedIndex) < 0) { var topPromedio = (from p in listaReporte group p by p.asignatura into g orderby g.Average(p => Convert.ToDouble(p.promedio)) descending select new { Asignatura = g.Key, Promedio = g.Average(p => Convert.ToDouble(p.promedio)), Cantidad = g.Count() }).Distinct().Take(3); if (topPromedio.Count() > 1) { TablaGrafico tabla2 = new TablaGrafico(); tabla2.listaCuerpo = new List<List<string>>(); List<string> encabezado2 = new List<string>(); List<List<string>> filasTabla2 = new List<List<string>>(); List<string> fila2 = new List<string>(); //TablaGrafico.Add("- Desviacion Estandar por materia: "); tabla2.titulo = "Top 3 Materias con mejor desempeño"; encabezado2.Add("Asignatura"); encabezado2.Add("Promedio"); //TablaGrafico.Add("- Top 3 Materias con mejor desempeño:"); foreach (var item in topPromedio) { // TablaGrafico.Add(item.Asignatura + " - Promedio: " + item.Promedio.ToString("#.00") + " - Cantidad de Evaluaciones: " + item.Cantidad.ToString()); fila2 = new List<string>(); fila2.Add(item.Asignatura); fila2.Add(item.Promedio.ToString("#.00")); filasTabla2.Add(fila2); } tabla2.listaEncabezados = encabezado2; tabla2.listaCuerpo = filasTabla2; TablaGrafico.Add(tabla2); } var worstPromedio = (from p in listaReporte group p by p.asignatura into g orderby g.Average(p => Convert.ToDouble(p.promedio)) ascending select new { Asignatura = g.Key, Promedio = g.Average(p => Convert.ToDouble(p.promedio)), Cantidad = g.Count() }).Distinct().Take(3); if (worstPromedio.Count() > 3) { //TablaGrafico.Add("- Top 3 Materias con bajo desempeño:"); TablaGrafico tabla4 = new TablaGrafico(); tabla4.listaCuerpo = new List<List<string>>(); List<string> encabezado4 = new List<string>(); List<List<string>> filasTabla4 = new List<List<string>>(); List<string> fila4 = new List<string>(); //TablaGrafico.Add("- Top 3 Materias con mejor desempeño:"); tabla4.titulo = "Top 3 Asignaturas con mejor desempeño"; encabezado4.Add("Asignatura"); encabezado4.Add("Promedio"); tabla4.listaEncabezados = encabezado4; foreach (var item in worstPromedio) { //TablaGrafico.Add(item.Asignatura + " - Promedio: " + item.Promedio.ToString("#.00") + " - Cantidad de Evaluaciones: " + item.Cantidad.ToString()); fila4 = new List<string>(); fila4.Add(item.Asignatura); fila4.Add(item.Promedio.ToString("#.##")); filasTabla4.Add(fila4); } tabla4.listaEncabezados = encabezado4; tabla4.listaCuerpo = filasTabla4; TablaGrafico.Add(tabla4); } } if (ddlAlumno.Items.Count > 0 && Convert.ToInt32(ddlAlumno.SelectedValue) < 0) { var worstAlumnos = (from p in listaReporte group p by p.alumno into g orderby g.Average(p => Convert.ToDouble(p.promedio)) ascending select new { Alumno = g.Key, Promedio = g.Average(p => Convert.ToDouble(p.promedio)) }).Distinct().Take(3); if (worstAlumnos.Count() > 1) { TablaGrafico tabla5 = new TablaGrafico(); tabla5.listaCuerpo = new List<List<string>>(); List<string> encabezado5 = new List<string>(); List<List<string>> filasTabla5 = new List<List<string>>(); List<string> fila5 = new List<string>(); tabla5.titulo = "Top Alumnos a observar"; encabezado5.Add("Alumno"); encabezado5.Add("Promedio General"); //TablaGrafico.Add("- Top Alumnos a observar:"); foreach (var item in worstAlumnos) { //TablaGrafico.Add(item.Alumno + " - Promedio General: " + item.Promedio.ToString("#.00")); fila5 = new List<string>(); fila5.Add(item.Alumno); fila5.Add(item.Promedio.ToString("#.00")); filasTabla5.Add(fila5); } tabla5.listaEncabezados = encabezado5; tabla5.listaCuerpo = filasTabla5; TablaGrafico.Add(tabla5); } } }
/// <summary> /// Generars the datos grafico. /// </summary> private void GenerarDatosGraficoInasistencias() { var cantAlumnos = from p in listaReporte group p by p.alumno into g select new { Alumno = g.Key, Cantidad = g.Count() }; var fechaMin = from p in listaReporte group p by p.alumno into g select new { Alumno = g.Key, Fecha = g.Min(p => p.fecha) }; var fechaMax = from p in listaReporte group p by p.alumno into g select new { Alumno = g.Key, Fecha = g.Max(p => p.fecha) }; TablaGrafico = new List<TablaGrafico>(); TablaGrafico tabla3 = new TablaGrafico(); tabla3.listaCuerpo = new List<List<string>>(); List<string> encabezado3 = new List<string>(); List<string> fila3 = new List<string>(); tabla3.titulo = "Periodo Analizado: " + fechaMin.First().Fecha.ToShortDateString() + " - " + fechaMax.First().Fecha.ToShortDateString(); encabezado3.Add("Cantidad de Alumnos"); fila3.Add(cantAlumnos.Count().ToString()); tabla3.listaEncabezados = encabezado3; tabla3.listaCuerpo.Add(fila3); TablaGrafico.Add(tabla3); var worstAlumnos = (from p in listaReporte group p by p.alumno into g orderby g.Count() descending select new { Alumno = g.Key, Faltas = g.Count() }).Distinct().Take(3); if (worstAlumnos.Count() > 1) { TablaGrafico tabla2 = new TablaGrafico(); tabla2.listaCuerpo = new List<List<string>>(); List<string> encabezado2 = new List<string>(); List<List<string>> filasTabla2 = new List<List<string>>(); List<string> fila2 = new List<string>(); tabla2.titulo = "Top Alumnos a observar"; encabezado2.Add("Alumno"); encabezado2.Add("Inasistencias"); foreach (var item in worstAlumnos) { fila2 = new List<string>(); fila2.Add(item.Alumno); fila2.Add(item.Faltas.ToString()); filasTabla2.Add(fila2); } tabla2.listaEncabezados = encabezado2; tabla2.listaCuerpo = filasTabla2; TablaGrafico.Add(tabla2); } var FaltasPorMotivo = (from p in listaReporte group p by p.motivo into g orderby g.Count() descending select new { Motivo = g.Key, Faltas = g.Count() }).Distinct().Take(3); TablaGrafico tabla4 = new TablaGrafico(); tabla4.listaCuerpo = new List<List<string>>(); List<string> encabezado4 = new List<string>(); List<List<string>> filasTabla4 = new List<List<string>>(); List<string> fila4 = new List<string>(); tabla4.titulo = "Cantidad de Inasistencias según Motivo"; encabezado4.Add("Motivo"); encabezado4.Add("Cantidad"); foreach (var item in FaltasPorMotivo) { fila4 = new List<string>(); fila4.Add(item.Motivo); fila4.Add(item.Faltas.ToString()); filasTabla4.Add(fila4); } tabla4.listaEncabezados = encabezado4; tabla4.listaCuerpo = filasTabla4; TablaGrafico.Add(tabla4); var worstAlumnosByMotivo = (from p in listaReporte group p by new { p.alumno, p.motivo } into g orderby g.Count() descending select new { Alumno = g.Key.alumno, Motivo = g.Key.motivo, Faltas = g.Count() }).Distinct().Take(3); if (worstAlumnosByMotivo.Count() > 1) { TablaGrafico tabla5 = new TablaGrafico(); tabla5.listaCuerpo = new List<List<string>>(); List<string> encabezado5 = new List<string>(); List<List<string>> filasTabla5 = new List<List<string>>(); List<string> fila5 = new List<string>(); tabla5.titulo = "Top Alumnos a observar por Cantidad y Motivo de Inasistencias"; encabezado5.Add("Alumno"); encabezado5.Add("Motivo"); encabezado5.Add("Cantidad"); foreach (var item in worstAlumnosByMotivo) { fila5 = new List<string>(); fila5.Add(item.Alumno); fila5.Add(item.Motivo); fila5.Add(item.Faltas.ToString()); filasTabla5.Add(fila5); } tabla5.listaEncabezados = encabezado5; tabla5.listaCuerpo = filasTabla5; TablaGrafico.Add(tabla5); } }
///// <summary> ///// Generars the datos grafico. ///// </summary> private void GenerarDatosGrafico() { var cantAsignaturas = from p in listaReporteRendimiento group p by p.asignatura into g select new { Asignatura = g.Key, Cantidad = g.Count() }; TablaGrafico = new List<TablaGrafico>(); TablaGrafico tabla3 = new TablaGrafico(); tabla3.listaCuerpo = new List<List<string>>(); List<string> encabezado3 = new List<string>(); List<string> fila3 = new List<string>(); tabla3.titulo = "Periodos Analizados: \n"; foreach (ListItem item in ddlCicloLectivo.Items) { if (item.Selected) { tabla3.titulo += item.Value + "\n"; } } tabla3.listaEncabezados = encabezado3; tabla3.listaCuerpo.Add(fila3); TablaGrafico.Add(tabla3); TablaGrafico tabla2 = new TablaGrafico(); tabla2.listaCuerpo = new List<List<string>>(); List<string> encabezado2 = new List<string>(); List<List<string>> filasTabla2 = new List<List<string>>(); List<string> fila2 = new List<string>(); var Ciclos = (from p in listaReporteRendimiento group p by p.ciclolectivo into g select new { CicloLectivo = g.Key }).Distinct(); var Asignaturas = (from p in listaReporteRendimiento group p by p.asignatura into g select new { Asignatura = g.Key }).Distinct(); tabla2.titulo = "Desempeño Por Ciclo Lectivo "; encabezado2.Add("Asignatura"); foreach (var item in Ciclos) { encabezado2.Add(item.CicloLectivo); } foreach (var materia in Asignaturas) { fila2 = new List<string>(); fila2.Add(materia.Asignatura); foreach (var item in Ciclos) { var Promedio = (from p in listaReporteRendimiento where p.ciclolectivo == item.CicloLectivo && p.asignatura == materia.Asignatura group p by p.asignatura into g select new { Asignatura = g.Key, Promedio = g.Average(p => Convert.ToDouble(p.promedio)) }).Distinct(); foreach (var itemPromedio in Promedio) { fila2.Add(itemPromedio.Promedio.ToString("#.00")); } if (Promedio.Count() == 0) fila2.Add(string.Empty); } filasTabla2.Add(fila2); } if (filasTabla2.Count > 0) { tabla2.listaEncabezados = encabezado2; tabla2.listaCuerpo = filasTabla2; TablaGrafico.Add(tabla2); } }
/// <summary> /// Generars the datos grafico. /// </summary> private void GenerarDatosGraficoSanciones() { var cantAlumnos = from p in listaReporte group p by p.alumno into g select new { Alumno = g.Key, Cantidad = g.Count() }; var fechaMin = from p in listaReporte group p by p.alumno into g select new { Alumno = g.Key, Fecha = g.Min(p => p.fecha) }; var fechaMax = from p in listaReporte group p by p.alumno into g select new { Alumno = g.Key, Fecha = g.Max(p => p.fecha) }; TablaGrafico = new List<TablaGrafico>(); TablaGrafico tabla3 = new TablaGrafico(); tabla3.listaCuerpo = new List<List<string>>(); List<string> encabezado3 = new List<string>(); List<string> fila3 = new List<string>(); tabla3.titulo = "Periodo Analizado: " + fechaMin.First().Fecha.ToShortDateString() + " - " + fechaMax.First().Fecha.ToShortDateString(); encabezado3.Add("Cantidad de Alumnos"); fila3.Add(cantAlumnos.Count().ToString()); tabla3.listaEncabezados = encabezado3; tabla3.listaCuerpo.Add(fila3); TablaGrafico.Add(tabla3); // Calcular Promedio y Desviacion Standard por tipo de Sanciones TablaGrafico tabla2 = new TablaGrafico(); tabla2.listaCuerpo = new List<List<string>>(); List<string> encabezado2 = new List<string>(); List<List<string>> filasTabla2 = new List<List<string>>(); List<string> fila2 = new List<string>(); tabla2.titulo = "Desviacion Estandar por Tipo de Sanción"; encabezado2.Add("Alumno"); encabezado2.Add("Promedio de Sanciones por Ocurrencia"); encabezado2.Add("Desviación"); double sumaSanciones, promedio, desvStd, dif, cociente, sumaDifCuad = 0; var serie = new List<RptCalificacionesAlumnoPeriodo>(); foreach (var item in listaTipoSancion) { promedio = 0; cociente = 0; desvStd = 0; sumaSanciones = 0; dif = 0; sumaDifCuad = 0; var listaParcial = listaReporte.FindAll(p => p.tipo == item.nombre); if (listaParcial.Count > 0) { foreach (var sancion in listaParcial) { sumaSanciones += Convert.ToInt32(sancion.cantidad); } promedio = sumaSanciones / listaParcial.Count; foreach (var sancion in listaParcial) { dif = (Convert.ToInt32(sancion.cantidad) - promedio); sumaDifCuad += Math.Pow(dif, 2); } cociente = (sumaDifCuad / (listaParcial.Count)); desvStd = Math.Sqrt(cociente); fila2 = new List<string>(); fila2.Add(item.nombre); fila2.Add(promedio.ToString("#.##")); fila2.Add(desvStd.ToString("#.##")); filasTabla2.Add(fila2); } } tabla2.listaEncabezados = encabezado2; tabla2.listaCuerpo = filasTabla2; TablaGrafico.Add(tabla2); var worstAlumnos = (from p in listaReporte group p by p.alumno into g orderby g.Count() descending select new { Alumno = g.Key, Sanciones = g.Sum(p => p.cantidad) }).Distinct().Take(3); if (worstAlumnos.Count() > 1) { TablaGrafico tabla4 = new TablaGrafico(); tabla4.listaCuerpo = new List<List<string>>(); List<string> encabezado4 = new List<string>(); List<List<string>> filasTabla4 = new List<List<string>>(); List<string> fila4 = new List<string>(); tabla4.titulo = "Top Alumnos a observar por Cantidad de Sanciones"; encabezado4.Add("Alumno"); encabezado4.Add("Sanciones"); foreach (var item in worstAlumnos) { fila4 = new List<string>(); fila4.Add(item.Alumno); fila4.Add(item.Sanciones.ToString()); filasTabla4.Add(fila4); } tabla4.listaEncabezados = encabezado4; tabla4.listaCuerpo = filasTabla4; TablaGrafico.Add(tabla4); } var SancionesPorTipo = (from p in listaReporte group p by p.tipo into g orderby g.Count() descending select new { Tipo = g.Key, Sanciones = g.Sum(p => p.cantidad) }).Distinct().Take(3); TablaGrafico tabla5 = new TablaGrafico(); tabla5.listaCuerpo = new List<List<string>>(); List<string> encabezado5 = new List<string>(); List<List<string>> filasTabla5 = new List<List<string>>(); List<string> fila5 = new List<string>(); tabla5.titulo = "Cantidad de Sanciones según Tipo"; encabezado5.Add("Motivo"); encabezado5.Add("Cantidad"); foreach (var item in SancionesPorTipo) { fila5 = new List<string>(); fila5.Add(item.Tipo); fila5.Add(item.Sanciones.ToString()); filasTabla5.Add(fila5); } tabla5.listaEncabezados = encabezado5; tabla5.listaCuerpo = filasTabla5; TablaGrafico.Add(tabla5); var SancionesPorMotivo = (from p in listaReporte group p by p.motivo into g orderby g.Count() descending select new { Motivo = g.Key, Sanciones = g.Sum(p => p.cantidad) }).Distinct().Take(3); TablaGrafico tabla6 = new TablaGrafico(); tabla6.listaCuerpo = new List<List<string>>(); List<string> encabezado6 = new List<string>(); List<List<string>> filasTabla6 = new List<List<string>>(); List<string> fila6 = new List<string>(); tabla6.titulo = "Cantidad de Sanciones según Motivo"; encabezado6.Add("Motivo"); encabezado6.Add("Cantidad"); foreach (var item in SancionesPorMotivo) { fila6 = new List<string>(); fila6.Add(item.Motivo); fila6.Add(item.Sanciones.ToString()); filasTabla6.Add(fila6); } tabla6.listaEncabezados = encabezado6; tabla6.listaCuerpo = filasTabla6; TablaGrafico.Add(tabla6); var worstAlumnosByMotivo = (from p in listaReporte group p by new { p.alumno, p.motivo } into g orderby g.Sum(p => p.cantidad) descending select new { Alumno = g.Key.alumno, Motivo = g.Key.motivo, Sanciones = g.Sum(p => p.cantidad) }).Distinct().Take(3); if (worstAlumnosByMotivo.Count() > 1) { TablaGrafico tabla7 = new TablaGrafico(); tabla7.listaCuerpo = new List<List<string>>(); List<string> encabezado7 = new List<string>(); List<List<string>> filasTabla7 = new List<List<string>>(); List<string> fila7 = new List<string>(); tabla7.titulo = "Top Alumnos a observar por Cantidad y Motivo de Sanciones"; encabezado7.Add("Alumno"); encabezado7.Add("Motivo"); encabezado7.Add("Cantidad"); foreach (var item in worstAlumnosByMotivo) { fila7 = new List<string>(); fila7.Add(item.Alumno); fila7.Add(item.Motivo); fila7.Add(item.Sanciones.ToString()); filasTabla7.Add(fila7); } tabla7.listaEncabezados = encabezado7; tabla7.listaCuerpo = filasTabla7; TablaGrafico.Add(tabla7); } var worstAlumnosByTipo = (from p in listaReporte group p by new { p.alumno, p.tipo } into g orderby g.Sum(p => p.cantidad) descending select new { Alumno = g.Key.alumno, Tipo = g.Key.tipo, Sanciones = g.Sum(p => p.cantidad) }).Distinct().Take(3); if (worstAlumnosByTipo.Count() > 1) { TablaGrafico tabla8 = new TablaGrafico(); tabla8.listaCuerpo = new List<List<string>>(); List<string> encabezado8 = new List<string>(); List<List<string>> filasTabla8 = new List<List<string>>(); List<string> fila8 = new List<string>(); tabla8.titulo = "Top Alumnos a observar por Cantidad y Tipo de Sanciones"; encabezado8.Add("Alumno"); encabezado8.Add("Motivo"); encabezado8.Add("Cantidad"); foreach (var item in worstAlumnosByTipo) { fila8 = new List<string>(); fila8.Add(item.Alumno); fila8.Add(item.Tipo); fila8.Add(item.Sanciones.ToString()); filasTabla8.Add(fila8); } tabla8.listaEncabezados = encabezado8; tabla8.listaCuerpo = filasTabla8; TablaGrafico.Add(tabla8); } }