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));
        }
Exemple #5
0
        // 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 }));
        }
Exemple #6
0
        // 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));
        }