예제 #1
0
        public ActionResult RegistrarCalificacion(string clave, string idEstudiante, string calificacion)
        {
            int    id;
            double nota;

            if (!int.TryParse(idEstudiante, out id))
            {
                TempData["message"] = "ID no válido";
                return(RedirectToAction("RegistrarCalificacion", "Admin"));
            }

            if (!double.TryParse(calificacion, out nota))
            {
                TempData["message"] = "Nota no válida";
                return(RedirectToAction("RegistrarCalificacion", "Admin"));
            }

            if (nota > 100 || nota < 1)
            {
                TempData["message"] = "Calificacion debe estar entre 1 y 100";
                return(RedirectToAction("RegistrarCalificacion", "Admin"));
            }

            //Recuperar la de la base de datos
            Asignatura asignatura = DB.GetAsignatura(clave);

            if (asignatura == null)
            {
                TempData["message"] = "Ha ocurrido un error";
                return(RedirectToAction("RegistrarCalificacion", "Admin"));
            }

            if (string.IsNullOrEmpty(asignatura.Clave))
            {
                TempData["message"] = "Asignatura no encontrada";
                return(RedirectToAction("RegistrarCalificacion", "Admin"));
            }

            //Recuperar el estudiante
            User user = Models.User.SelectUserById(id);


            if (user == null)
            {
                TempData["message"] = "Ha ocurrido un error";
                return(RedirectToAction("RegistrarCalificacion", "Admin"));
            }

            //El usuario no existe
            if (user.ID == 0)
            {
                TempData["message"] = "ID estudiante no encontrado";
                return(RedirectToAction("RegistrarCalificacion", "Admin"));
            }

            //El usuario no es un estudiante
            if (user.Type != Models.User.Tipo.estudiante)
            {
                TempData["message"] = "ID estudiante no encontrado";
                return(RedirectToAction("RegistrarCalificacion", "Admin"));
            }


            Calificacion Calificacion = DB.SelectCalificacion(user, asignatura);

            if (Calificacion == null)
            {
                TempData["message"] = "Ha ocurrido un error";
                return(RedirectToAction("RegistrarCalificacion", "Admin"));
            }

            //El estudiante ya tiene una nota de esa asignatura
            if (Calificacion.Estudiante != null)
            {
                TempData["message"] = "Estudiante ya cuenta con dicha nota";
                return(RedirectToAction("RegistrarCalificacion", "Admin"));
            }

            Calificacion = new Calificacion(user, asignatura, nota);

            //Anadir el  objeto calificacion a la base de datos
            if (!DB.AddCalificacion(Calificacion))
            {
                TempData["message"] = "Ha ocurrido un error";
                return(RedirectToAction("RegistrarCalificacion", "Admin"));
            }

            TempData["message"] = "Calificacion registrada con exito";
            TempData["success"] = "true";

            return(RedirectToAction("Index", "Admin"));
        }