public ActionResult Graph(int alumnoid) { Kyo.Entidades.Alumno alumno = db.Alumnos.Find(alumnoid); ViewBag.Title = "Detalles de Asistencia de " + alumno.Nombre + " " + alumno.Apellido; this.GetAnios(); return(View()); }
public ActionResult generargrafico(string anio, int alumnoId) { Kyo.Entidades.Alumno alumno = db.Alumnos.Find(alumnoId); Kyo.Entidades.Dojo dojo = db.Dojos.Find(alumno.DojoId); AsistenciaGrafico graficoData = new Models.AsistenciaGrafico(); graficoData.InitMeses(); for (int i = 1; i < 13; i++) { var asistenciasFechas = db.Asistencias.Where(asis => asis.AlumnoId == alumnoId && asis.Fecha.Year.ToString() == anio && asis.Fecha.Month == i).Select(a => a.Fecha).OrderBy(a => a.Month); int semanas = 0; DateTime mesAnio = new DateTime(int.Parse(anio), i, 1); int mes = mesAnio.Month; //calculo la cantidad de semanas while (mes == mesAnio.Month) { mesAnio = mesAnio.AddDays(7); semanas++; } if (asistenciasFechas.Count() > 0) { var fechasPorMes = asistenciasFechas.GroupBy(f => f.Month, (key, g) => new { Mes = key, DiasMesAsistio = g.Count() }); foreach (var fecha in fechasPorMes) { int diasMes = semanas * dojo.DiasClasesSemanales; graficoData.Detalle.Add(new DetalleMeses { DiasAsistio = fecha.DiasMesAsistio, DiasMes = diasMes }); } } else { int diasMes = semanas * dojo.DiasClasesSemanales; graficoData.Detalle.Add(new DetalleMeses { DiasAsistio = 0, DiasMes = diasMes }); } } return(Json(graficoData, JsonRequestBehavior.AllowGet)); }