// 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)); }
// 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)); }