Exemple #1
0
        // GET: Admin/SubTemas
        public ActionResult Index(int id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            var tema = TemaDataAccess.ObtenerTemas(db).FirstOrDefault(te => te.TemaId == id);

            if (tema == null)
            {
                return(HttpNotFound());
            }


            var userId = ((ClaimsIdentity)User.Identity).FindFirst("UserId").Value;

            var subTemas        = SubTemaDataAccess.ObtenerSubTemas(db).Include(s => s.Tema).Where(subtema => subtema.TemaId == id).OrderBy(d => d.Orden).ToList();
            var listaSubtemaIds = subTemas.Select(st => st.SubTemaId).ToList();

            var subtemasDesbloqueados = db.SubTemaDesbloqueados.Where(sd => sd.AlumnoId == userId &&
                                                                      listaSubtemaIds.Contains(sd.SubTemaId)).Select(sd => sd.SubTemaId).ToList();

            SubTemasIndexViewModel viewModel = new SubTemasIndexViewModel();

            viewModel.Tema = tema;


            viewModel.listadoSubTemasBloqueados    = subTemas.Where(st => !subtemasDesbloqueados.Contains(st.SubTemaId)).ToList();
            viewModel.listadoSubTemasDesbloqueados = subTemas.Where(st => subtemasDesbloqueados.Contains(st.SubTemaId)).ToList();
            if (User.IsInRole("Admin"))
            {
                viewModel.listadoSubTemasBloqueados    = new List <SubTema>();
                viewModel.listadoSubTemasDesbloqueados = subTemas.ToList();
            }


            var gramaticas    = GramaticaDataAccess.ObtenerGramaticas(db).Include(gt => gt.Vocabularios).Where(gr => listaSubtemaIds.Contains(gr.SubTemaId));
            var gramaticasIds = gramaticas.Select(gr => gr.GramaticaId).ToList();

            viewModel.NUnidades    = gramaticasIds.Count;
            viewModel.NFrases      = db.Frases.Count(f => gramaticasIds.Contains(f.GramaticaId));
            viewModel.NVocabulario = gramaticas.SelectMany(gr => gr.Vocabularios).Count();
            viewModel.NPracticas   = BloqueDataAccess.ObtenerBloques(db).Count(b => listaSubtemaIds.Contains(b.SubTemaId));
            viewModel.NLecciones   = listaSubtemaIds.Count;

            viewModel.TemaSuperado = (db.Examenes.Count(e => e.AlumnoId == userId && e.Aprobado && e.SubTema.TemaId == id) == listaSubtemaIds.Count);

            viewModel.examenesDesbloqueados = db.ExamenDesbloqueados.Where(ex => ex.AlumnoId == userId).Select(ex => ex.SubTemaId).ToList();
            viewModel.listadoSubTemasAcceso = db.SubTemaAccesoUsuarios.Where(sau => sau.AlumnoId == userId).Select(sau => sau.SubTemaId).ToList();

            return(View(viewModel));
        }
Exemple #2
0
        // GET: Admin/SubTemas
        public ActionResult Index(int id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            var subTemas = db.SubTemas.Include(s => s.Tema).Where(subtema => subtema.TemaId == id).OrderBy(d => d.Orden).ToList();

            if (subTemas == null)
            {
                return(HttpNotFound());
            }


            SubTemasIndexViewModel viewModel = new SubTemasIndexViewModel();

            viewModel.listadoSubTemas = subTemas;
            viewModel.Tema            = db.Temas.Find(id);
            return(View(viewModel));
        }