Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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));
        }