// GET: Admin/Contenidos public ActionResult Index(int id, int gramaticaId) { if (id == null || gramaticaId == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var subtema = SubTemaDataAccess.ObtenerSubTemas(db).Include(s => s.Tema).SingleOrDefault(s => s.SubTemaId == id); var gramatica = GramaticaDataAccess.ObtenerGramaticas(db).FirstOrDefault(g => g.GramaticaId == gramaticaId); if (subtema == null || gramatica == null) { return(HttpNotFound()); } if (!ComprobarAccesoSubTema(id)) { return(RedirectToAction("SinAcceso", "Home", new { Area = "Alumno" })); } var userId = ((ClaimsIdentity)User.Identity).FindFirst("UserId").Value; var frases = db.Frases.Where(fr => fr.GramaticaId == gramaticaId).OrderBy(v => v.Palabra_en).ToList(); FrasesIndexViewModel viewModel = new FrasesIndexViewModel(); viewModel.glosario = db.FraseGlosarios.Where(vg => vg.AlumnoId == userId).Select(vg => vg.FraseId).ToList(); viewModel.frases = frases; viewModel.Subtema = subtema; viewModel.Gramatica = gramatica; return(View(viewModel)); }
// 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: Alumno/Vocabularios/Gramatica public ActionResult Gramatica(int id, int gramaticaId, string idioma) { if (id == null || gramaticaId == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var subtema = SubTemaDataAccess.ObtenerSubTemas(db).Include(s => s.Tema).SingleOrDefault(s => s.SubTemaId == id); var gramatica = GramaticaDataAccess.ObtenerGramaticas(db).Include(gt => gt.Vocabularios.Select(v => v.CategoriaVocabulario)).FirstOrDefault(g => g.GramaticaId == gramaticaId); if (subtema == null || gramatica == null) { return(HttpNotFound()); } if (!ComprobarAccesoSubTema(id)) { return(RedirectToAction("SinAcceso", "Home", new { Area = "Alumno" })); } if (string.IsNullOrEmpty(idioma)) { idioma = "en"; } var vocabulario = new List <Vocabulario>(); if (idioma == "en") { vocabulario = gramatica.Vocabularios.OrderBy(v => v.Palabra_en).ToList(); } else { vocabulario = gramatica.Vocabularios.OrderBy(v => v.Palabra_es).ToList(); } VocabulariosGramaticaViewModel viewModel = new VocabulariosGramaticaViewModel(); viewModel.vocabulario = vocabulario; viewModel.Subtema = subtema; viewModel.Gramatica = gramatica; viewModel.Idioma = idioma; var userId = ((ClaimsIdentity)User.Identity).FindFirst("UserId").Value; viewModel.glosario = db.VocabularioGlosarios.Where(vg => vg.AlumnoId == userId).Select(vg => vg.VocabularioId).ToList(); return(View(viewModel)); }
// GET: Admin/SubTemas public ActionResult View(int id, int?gramaticaId) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var subTema = SubTemaDataAccess.ObtenerSubTemas(db).FirstOrDefault(su => su.SubTemaId == id); if (subTema == null) { return(HttpNotFound()); } if (!ComprobarAccesoSubTema(id)) { return(RedirectToAction("SinAcceso", "Home", new { Area = "Alumno" })); } SubTemasViewViewModel viewModel = new SubTemasViewViewModel(); viewModel.Tema = TemaDataAccess.ObtenerTemas(db).FirstOrDefault(te => te.TemaId == subTema.TemaId); if (viewModel.Tema == null) { return(HttpNotFound()); } viewModel.SubTema = subTema; var bloques = BloqueDataAccess.ObtenerBloques(db).Include(t => t.Area).Include(t => t.TipoEjercicio).Where(t => t.SubTemaId == id); var areas = db.Areas.Where(a => a.Orden.HasValue).OrderBy(a => a.Orden.Value).ToList(); var listadoAreas = new List <AreaContenidos>(); foreach (var area in areas) { listadoAreas.Add(new AreaContenidos { Area = area, NumContenidos = bloques.Where(c => c.AreaId == area.AreaId).Count() }); } viewModel.listadoAreas = listadoAreas; var Gramaticas = GramaticaDataAccess.ObtenerGramaticas(db).Include(gram => gram.GramaticaCuerpo).Where(gram => gram.SubTemaId == id).OrderBy(d => d.Orden).ToList(); viewModel.Gramaticas = Gramaticas; if (gramaticaId.HasValue) { viewModel.GramaticaMostrar = GramaticaDataAccess.ObtenerGramaticas(db).Include(gram => gram.GramaticaCuerpo).FirstOrDefault(gr => gr.GramaticaId == gramaticaId.Value); } else { viewModel.GramaticaMostrar = Gramaticas.FirstOrDefault(); } var userId = ((ClaimsIdentity)User.Identity).FindFirst("UserId").Value; viewModel.MostrarExamen = (db.Examenes.Where(e => e.AlumnoId == userId && e.SubTemaId == id && e.Aprobado).FirstOrDefault() == null); viewModel.examenesDesbloqueados = db.ExamenDesbloqueados.Where(ex => ex.AlumnoId == userId && ex.SubTemaId == id).Select(ex => ex.SubTemaId).ToList(); return(View(viewModel)); }