public HttpResponseMessage Eliminar(SubTema entidad) { var resultado = (HttpResponseMessage)null; try { if (entidad == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, new { message = "El modelo no puede ser nulo" })); } if (entidad.Id < 1) { return(Request.CreateResponse(HttpStatusCode.BadRequest, new { message = "El id debe ser amyor a 0" })); } entidad = _subTemaService.GetById(entidad.Id); if (entidad != null) { _subTemaService.Delete(entidad); resultado = Request.CreateResponse(HttpStatusCode.OK, 1); } else { resultado = Request.CreateResponse(HttpStatusCode.OK, 0); } } catch (Exception exception) { resultado = Request.CreateResponse(HttpStatusCode.InternalServerError, new { message = exception.Message }); } return(resultado); }
// GET: Admin/SubTemas/Delete/5 public ActionResult Delete(int id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } SubTema subTema = db.SubTemas.Find(id); if (subTema == null) { return(HttpNotFound()); } //Ordenar de nuevo todos los subtemas foreach (SubTema st in db.SubTemas.Where(b => b.TemaId == subTema.TemaId && b.Orden >= subTema.Orden).ToList()) { st.Orden = (st.Orden) - 1; db.Entry(st).State = EntityState.Modified; } db.SaveChanges(); //Eliminar subtema db.SubTemas.Remove(subTema); db.SaveChanges(); return(RedirectToAction("Index", new { id = subTema.TemaId })); }
public HttpResponseMessage Guardar(SubTema entidad) { var resultado = (HttpResponseMessage)null; try { if (entidad == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, new { message = "El modelo no puede ser nulo" })); } if (string.IsNullOrWhiteSpace(entidad.Descripcion)) { return(Request.CreateResponse(HttpStatusCode.BadRequest, new { message = "La descripción no puede ser nula o vacía" })); } if (entidad.Id > 0) { _subTemaService.Update(entidad); } else { _subTemaService.Create(entidad); } resultado = Request.CreateResponse(HttpStatusCode.OK, entidad.Id); } catch (Exception exception) { resultado = Request.CreateResponse(HttpStatusCode.InternalServerError, new { message = exception.Message }); } return(resultado); }
private void CargarSubTema(int subTemaId) { if (_subTemaId == 0) { _subTema = new SubTema(); } else { _subTema = Uow.SubTemas.Obtener(t => t.Id == subTemaId); this.Nombre = _subTema.Nombre; } }
private void CargarTema(int subTemaId) { if (subTemaId == 0) { _subTema = new SubTema(); //Default values. } else { _subTema = Uow.SubTemas.Obtener(t => t.Id == subTemaId); this.Nombre = _subTema.Nombre; } }
//POST: ModificarOrden public ActionResult ModificarOrden(int id, string posicion) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } SubTema subTema = db.SubTemas.Find(id); if (subTema == null) { return(HttpNotFound()); } actualizarOrdenSubtema(id, 1, posicion); return(RedirectToAction("Index", new { id = subTema.TemaId })); }
// GET: Admin/SubTemas/Edit/5 public ActionResult Edit(int id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } SubTema subtema = db.SubTemas.Where(a => a.SubTemaId == id).FirstOrDefault(); if (subtema == null) { return(HttpNotFound()); } SubTemasEditViewModel viewModel = new SubTemasEditViewModel(); viewModel.Tema = db.Temas.Find(subtema.TemaId); viewModel.SubTema = subtema; viewModel.CargarClienteSeleccionado(db); return(View(viewModel)); }
// GET: Admin/Gramaticas/Create public ActionResult Create(int id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } SubTema subTema = db.SubTemas.FirstOrDefault(a => a.SubTemaId == id); if (subTema == null) { return(HttpNotFound()); } GramaticasCreateViewModel viewModel = new GramaticasCreateViewModel(); viewModel.SubTema = subTema; viewModel.Tema = db.Temas.Find(viewModel.SubTema.TemaId); viewModel.CargarClienteSeleccionado(db); return(View(viewModel)); }
private void actualizarOrdenSubtema(int id, int posicion, string mov) { SubTema subTema = db.SubTemas.Find(id); Int32 ordenNuevo; if (mov.Equals("top")) { //Al subtema seleccionado le restamos 1 posicion ordenNuevo = (subTema.Orden) - 1; //Buscamos el subtema con el orden a modificar para sumarle 1 posicion SubTema st = db.SubTemas.Where(b => b.TemaId == subTema.TemaId && b.Orden == ordenNuevo).FirstOrDefault(); st.Orden = (st.Orden) + 1; db.Entry(st).State = EntityState.Modified; db.SaveChanges(); subTema.Orden = ordenNuevo; db.Entry(subTema).State = EntityState.Modified; db.SaveChanges(); } if (mov.Equals("down")) { //Al subtema seleccionado le sumamos 1 posicion ordenNuevo = (subTema.Orden) + 1; //Buscamos el subtema con el orden a modificar para restarle 1 posicion SubTema st = db.SubTemas.Where(b => b.TemaId == subTema.TemaId && b.Orden == ordenNuevo).FirstOrDefault(); st.Orden = (st.Orden) - 1; db.Entry(st).State = EntityState.Modified; db.SaveChanges(); subTema.Orden = ordenNuevo; db.Entry(subTema).State = EntityState.Modified; db.SaveChanges(); } }
public JsonResult FinExamen(int id, PreguntaExamen[] respuestas) { var userId = ((ClaimsIdentity)User.Identity).FindFirst("UserId").Value; int aciertos = 0; int totales = respuestas.Length; List <RespuestaIncorrecta> respuestasIncorrectas = new List <RespuestaIncorrecta>(); foreach (var pregunta in respuestas) { bool acertada = false; string enunciado = ""; string respuestaCorrecta = ""; string respuestaSeleccionada = ""; if (pregunta.tipo == "Tests") { Test test = db.Tests.Find(pregunta.id); if (pregunta.respuesta != null && test.RespuestaCorrecta.ToString() == pregunta.respuesta) { aciertos++; acertada = true; } else { enunciado = test.Enunciado; respuestaCorrecta = ObtenerRespuestaTest(test, test.RespuestaCorrecta); respuestaSeleccionada = ObtenerRespuestaTest(test, Convert.ToInt32(pregunta.respuesta)); } } if (pregunta.tipo == "FillTheGaps") { if (pregunta.respuesta != null) { pregunta.respuesta = pregunta.respuesta.Replace(',', '#'); } FillTheGap fillTheGap = db.FillTheGaps.Find(pregunta.id); if (pregunta.respuesta != null && fillTheGap.Respuestas.ToLower() == pregunta.respuesta.ToLower()) { aciertos++; acertada = true; } else { enunciado = fillTheGap.Enunciado; respuestaCorrecta = fillTheGap.Respuestas.Replace('#', ' '); if (pregunta.respuesta != null) { respuestaSeleccionada = pregunta.respuesta.Replace('#', ' '); } } } if (pregunta.tipo == "TrueFalses") { TrueFalse TrueFalse = db.TrueFalses.Find(pregunta.id); if (pregunta.respuesta != null && TrueFalse.RespuestaCorrecta.ToString() == pregunta.respuesta) { aciertos++; acertada = true; } else { enunciado = TrueFalse.Enunciado; respuestaCorrecta = TrueFalse.RespuestaCorrecta.ToString(); respuestaSeleccionada = pregunta.respuesta; } } if (pregunta.tipo == "AudioSentenceExercises") { if (pregunta.respuesta != null) { pregunta.respuesta = pregunta.respuesta.Replace(',', '#'); } AudioSentenceExercise audioSentence = db.AudioSentenceExercises.Find(pregunta.id); if (pregunta.respuesta != null && audioSentence.Respuestas.ToLower() == pregunta.respuesta.ToLower()) { aciertos++; acertada = true; } else { enunciado = audioSentence.Enunciado; respuestaCorrecta = audioSentence.Respuestas.Replace('#', ' '); if (pregunta.respuesta != null) { respuestaSeleccionada = pregunta.respuesta.Replace('#', ' '); } } } if (!acertada) { RespuestaIncorrecta respuestaInc = new RespuestaIncorrecta(); respuestaInc.Pregunta = enunciado; respuestaInc.RespuestaCorrecta = respuestaCorrecta; respuestaInc.RespuestaSeleccionada = respuestaSeleccionada; respuestaInc.Tipo = pregunta.tipo; respuestaInc.PreguntaId = pregunta.id; respuestasIncorrectas.Add(respuestaInc); } } bool _aprobado = (aciertos >= 28); FinExamenTest resultado = new Models.FinExamenTest(); resultado.Correctas = aciertos; resultado.Aprobado = _aprobado; resultado.Porcentaje = (aciertos * 100 / totales); resultado.IdSiguienteLeccion = 0; resultado.SiguienteLeccion = ""; SubTema _subtemaActual = SubTemaDataAccess.ObtenerSubTemas(db).FirstOrDefault(s => s.SubTemaId == id); SubTema _siguienteTema = SubTemaDataAccess.ObtenerSubTemas(db).Where(s => s.TemaId == _subtemaActual.TemaId && s.Orden > _subtemaActual.Orden).OrderBy(s => s.Orden).FirstOrDefault(); resultado.UltimoExamen = true; if (_siguienteTema != null) { resultado.UltimoExamen = false; if (_aprobado) { resultado.IdSiguienteLeccion = _siguienteTema.SubTemaId; resultado.SiguienteLeccion = _siguienteTema.Descripcion; var BloquearSubtemas = ((ClaimsIdentity)User.Identity).FindFirst("BloquearSubtemas").Value; bool anyadir = true; if (Convert.ToBoolean(BloquearSubtemas)) { var listaSubtemasAcceso = db.SubTemaAccesoUsuarios.Where(sau => sau.AlumnoId == userId).Select(sau => sau.SubTemaId).ToList(); if (!listaSubtemasAcceso.Contains(_siguienteTema.SubTemaId)) { anyadir = false; } } if (anyadir) { SubTemaDesbloqueado _desbloqueado = new SubTemaDesbloqueado { AlumnoId = userId, FechaDesbloqueo = DateTime.Now, SubTemaId = _siguienteTema.SubTemaId }; db.SubTemaDesbloqueados.Add(_desbloqueado); db.SaveChanges(); } } } var NombreUsuario = ((ClaimsIdentity)User.Identity).FindFirst("NombreUsuario").Value; Examen _examen = new Examen { Aciertos = aciertos, AlumnoId = userId, NombreAlumno = NombreUsuario, Aprobado = _aprobado, SubTemaId = id, Fallos = totales - aciertos, FechaExamen = DateTime.Now, Total = totales }; _examen.RespuestasIncorrectas = respuestasIncorrectas; db.Examenes.Add(_examen); db.SaveChanges(); return(Json(resultado, JsonRequestBehavior.AllowGet)); }
public JsonResult FinExamenFillTheGap(int id, int aciertos, int errores, int totales, RespuestaIncorrectaFillTheGapExamen[] respuestasIncorrectas) { var userId = ((ClaimsIdentity)User.Identity).FindFirst("UserId").Value; FillTheGap _fillTheGap = db.FillTheGaps.Find(id); bool _aprobado = (aciertos >= 28); FinExamenFillTheGap resultado = new FinExamenFillTheGap(); resultado.Correctas = aciertos; resultado.Aprobado = _aprobado; resultado.Porcentaje = (aciertos * 100 / totales); resultado.IdSiguienteLeccion = 0; resultado.SiguienteLeccion = ""; SubTema _tema = SubTemaDataAccess.ObtenerSubTemas(db).Where(s => s.SubTemaId == _fillTheGap.SubTemaId).FirstOrDefault(); SubTema _siguienteTema = SubTemaDataAccess.ObtenerSubTemas(db).Where(s => s.TemaId == _tema.TemaId && s.Orden > _tema.Orden).OrderBy(s => s.Orden).FirstOrDefault(); resultado.UltimoExamen = true; if (_siguienteTema != null) { resultado.UltimoExamen = false; if (_aprobado) { resultado.IdSiguienteLeccion = _siguienteTema.SubTemaId; resultado.SiguienteLeccion = _siguienteTema.Descripcion; var BloquearSubtemas = ((ClaimsIdentity)User.Identity).FindFirst("BloquearSubtemas").Value; bool anyadir = true; if (Convert.ToBoolean(BloquearSubtemas)) { var listaSubtemasAcceso = db.SubTemaAccesoUsuarios.Where(sau => sau.AlumnoId == userId).Select(sau => sau.SubTemaId).ToList(); if (!listaSubtemasAcceso.Contains(_siguienteTema.SubTemaId)) { anyadir = false; } } if (anyadir) { SubTemaDesbloqueado _desbloqueado = new SubTemaDesbloqueado { AlumnoId = userId, FechaDesbloqueo = DateTime.Now, SubTemaId = _siguienteTema.SubTemaId }; db.SubTemaDesbloqueados.Add(_desbloqueado); db.SaveChanges(); } } } var NombreUsuario = ((ClaimsIdentity)User.Identity).FindFirst("NombreUsuario").Value; Examen _examen = new Examen { Aciertos = aciertos, AlumnoId = userId, NombreAlumno = NombreUsuario, Aprobado = _aprobado, Fallos = errores, FechaExamen = DateTime.Now, Total = totales }; List <RespuestaIncorrecta> respuestas = new List <RespuestaIncorrecta>(); foreach (RespuestaIncorrectaFillTheGapExamen respuestaIncorrecta in respuestasIncorrectas) { FillTheGap fillTheGap = db.FillTheGaps.Find(respuestaIncorrecta.id); RespuestaIncorrecta respuestaInc = new RespuestaIncorrecta(); respuestaInc.Pregunta = fillTheGap.Enunciado; respuestaInc.RespuestaCorrecta = fillTheGap.Respuestas.Replace('#', ' '); respuestaInc.RespuestaSeleccionada = respuestaIncorrecta.respuesta.Replace('#', ' '); respuestas.Add(respuestaInc); } _examen.RespuestasIncorrectas = respuestas; db.Examenes.Add(_examen); db.SaveChanges(); return(Json(resultado, JsonRequestBehavior.AllowGet)); }