Example #1
0
        public async Task <ActionResult> TakeQuiz(QuizViewModel quiz)
        {
            Evaluation evaluation = await Db.Evaluations.Where(x => x.Id == quiz.Id).FirstOrDefaultAsync();

            if (evaluation == null)
            {
                return(HttpNotFound());
            }
            EvaluationBL evaluationBL = new EvaluationBL();

            try
            {
                List <Answer> answers = null;
                if (quiz.RunoutTime)
                {
                    quiz.Questions = quiz.Questions.Where(x => x.Options != null).ToList();
                    answers        = quiz.Questions.Select(x => new Answer {
                        QuestionOptionId = x.Options.SelectedAnswer
                    }).ToList();
                }

                if (ModelState.IsValid)
                {
                    if (evaluationBL.UserCanBeEvaluated(evaluation, CurrentUser.Id, answers))
                    {
                        evaluationBL.TakeQuiz(evaluation, quiz, CurrentUser.Id);
                        await Db.SaveChangesAsync();

                        Flash.Success("Ok", "El Quiz ha sido presentado exitosamente");
                        QuizViewModel reviewedQuiz = evaluationBL.ReviewQuiz(evaluation, CurrentUser.Id);
                        return(View("ReviewQuiz", reviewedQuiz));
                    }
                    else
                    {
                        await Db.SaveChangesAsync();

                        Flash.Error("Error", "Ha caducado el tiempo para presentar el quiz");
                        return(RedirectToAction("Evaluations"));
                    }
                }
                else
                {
                    Flash.Error("Error", "Ha ocurrido un error al intentar presentar la evaluaciĆ³n");
                    return(RedirectToAction("Evaluations"));
                }
            }
            catch (Exception)
            {
                Flash.Error("Error", "Ha ocurrido un error al intentar presentar la evaluaciĆ³n");
                return(RedirectToAction("Evaluations"));
            }
        }
Example #2
0
        public async Task <ActionResult> ReviewQuiz(Guid Id)
        {
            if (Id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Evaluation evaluation = await Db.Evaluations.Where(x => x.Id == Id).FirstOrDefaultAsync <Evaluation>();

            if (evaluation == null)
            {
                return(HttpNotFound());
            }
            EvaluationBL  evaluationBL = new EvaluationBL();
            QuizViewModel reviewedQuiz = evaluationBL.ReviewQuiz(evaluation, CurrentUser.Id);

            return(View("ReviewQuiz", reviewedQuiz));
        }
Example #3
0
        public async Task <ActionResult> ReviewQuiz(string userId, Guid evaluationId)
        {
            if (evaluationId == null || String.IsNullOrEmpty(userId))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Evaluation evaluation = await Db.Evaluations.Where(x => x.Id == evaluationId).FirstOrDefaultAsync <Evaluation>();

            if (evaluation == null)
            {
                return(HttpNotFound());
            }
            User user = await UserManager.FindByIdAsync(userId);

            if (user == null)
            {
                return(HttpNotFound());
            }
            EvaluationBL  evaluationBL = new EvaluationBL();
            QuizViewModel reviewedQuiz = evaluationBL.ReviewQuiz(evaluation, userId, true);

            return(View(reviewedQuiz));
        }