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