public JsonResult ContestarFillTheGap(int id, string respuesta) { respuesta = respuesta.Replace(',', '#'); FillTheGap fillTheGap = db.FillTheGaps.Find(id); ResultadoFillTheGapExamen resultado = new ResultadoFillTheGapExamen(); if (fillTheGap.Respuestas.ToLower() == respuesta.ToLower()) { resultado.Correcto = true; } else { resultado.Correcto = false; string[] _arraySoluciones = fillTheGap.Respuestas.ToLower().Split('#'); string[] _arrayRespuestas = respuesta.ToLower().Split('#'); resultado.correctas = new List <bool>(); for (int i = 0; i < _arraySoluciones.Length; i++) { resultado.correctas.Add((_arraySoluciones[i] == _arrayRespuestas[i])); } } resultado.id = id; resultado.respuesta = respuesta; return(Json(resultado, JsonRequestBehavior.AllowGet)); }
public JsonResult GetFillTheGap(int id) { FillTheGap fillTheGap = db.FillTheGaps.Find(id); PreguntaFillTheGapExamen pregunta = new PreguntaFillTheGapExamen() { Enunciado = fillTheGap.Enunciado }; return(Json(pregunta, JsonRequestBehavior.AllowGet)); }
public JsonResult GetFillTheGap(int id) { FillTheGap fillTheGap = db.FillTheGaps.Find(id); Bloque bloque = db.Bloques.Find(fillTheGap.BloqueId); PreguntaFillTheGap pregunta = new PreguntaFillTheGap() { Enunciado = fillTheGap.Enunciado, Explicacion = bloque.Explicacion }; return(Json(pregunta, JsonRequestBehavior.AllowGet)); }
public JsonResult Contestar(int id, string respuesta) { respuesta = respuesta.Replace(',', '#'); FillTheGap fillTheGap = db.FillTheGaps.Find(id); ResultadoFillTheGap resultado = new ResultadoFillTheGap(); if (fillTheGap.Respuestas.ToLower() == respuesta.ToLower()) { resultado.Correcto = true; AuthRepository authRepository = new AuthRepository(); ApplicationUser user = authRepository.FindByName(User.Identity.Name); user.PuntosActual = user.PuntosActual + 1; user.PuntosTotal = user.PuntosTotal + 1; var userResult = authRepository.Update(user); ContenidoHelper.QuitarMistake(fillTheGap.BloqueId, id); } else { resultado.Correcto = false; string[] _arraySoluciones = fillTheGap.Respuestas.ToLower().Split('#'); string[] _arrayRespuestas = respuesta.ToLower().Split('#'); resultado.correctas = new List <bool>(); for (int i = 0; i < _arraySoluciones.Length; i++) { resultado.correctas.Add((_arraySoluciones[i] == _arrayRespuestas[i])); } } if (string.IsNullOrEmpty(fillTheGap.Explicacion) || fillTheGap.Explicacion == "-") { if (resultado.Correcto) { resultado.Explicacion = "Correcto"; } else { resultado.Explicacion = "Incorrecto"; } } else { resultado.Explicacion = fillTheGap.Explicacion; } return(Json(resultado, JsonRequestBehavior.AllowGet)); }
// GET: Admin/FillTheGaps/Delete/5 public ActionResult Delete(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } FillTheGap FillTheGap = db.FillTheGaps.Find(id); if (FillTheGap == null) { return(HttpNotFound()); } db.FillTheGaps.Remove(FillTheGap); db.SaveChanges(); return(RedirectToAction("Create", "FillTheGaps", new { id = FillTheGap.BloqueId })); }
// GET: Admin/FillTheGaps/Edit/5 public ActionResult Edit(int id, int?examenId) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } FillTheGap FillTheGap = db.FillTheGaps.Find(id); if (FillTheGap == null) { return(HttpNotFound()); } FillTheGapEditViewModel viewModel = new FillTheGapEditViewModel(); viewModel.Inicializar(FillTheGap.BloqueId); viewModel.ExamenId = examenId; viewModel.FillTheGap = FillTheGap; return(View(viewModel)); }
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)); }