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)); }
public ActionResult generargraficoAlumnosMes(string anio, string mes, int dojoId = 1) { var alumnos = db.Alumnos.ToList(); Kyo.Entidades.Dojo dojo = db.Dojos.Find(dojoId); int semanas = 0; int mess = int.Parse(mes); DateTime mesAnio = new DateTime(int.Parse(anio), mess, 1); //calculo la cantidad de semanas while (int.Parse(mes) == mesAnio.Month) { mesAnio = mesAnio.AddDays(7); semanas++; } int diasMes = semanas * dojo.DiasClasesSemanales; AsistenciaGrafico graficoData = new Models.AsistenciaGrafico(); foreach (var alumno in alumnos) { var asistenciasFechas = db.Asistencias.Where(asis => asis.AlumnoId == alumno.Id && asis.Fecha.Year.ToString() == anio && asis.Fecha.Month == mess).Select(a => a.Fecha).OrderBy(a => a.Month); if (asistenciasFechas.Count() > 0) { var fechasPorMes = asistenciasFechas.GroupBy(f => f.Month, (key, g) => new { Mes = key, DiasMesAsistio = g.Count() }); foreach (var fecha in fechasPorMes) { graficoData.Texto.Add(alumno.Nombre[0].ToString() + "." + alumno.Apellido.Substring(0, 2)); graficoData.Detalle.Add(new DetalleMeses { DiasAsistio = fecha.DiasMesAsistio, DiasMes = diasMes }); } } } return(Json(graficoData, JsonRequestBehavior.AllowGet)); }