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")); } }
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)); }
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)); }