public IActionResult TakeAssessment(Guid?id) { Assessment assessment = _assessmentService.GetAssessmentAndQuestionsById(id.Value); if (User.Identity.IsAuthenticated && User.IsInRole("Student")) { Guid studentId = Guid.Parse(User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value); Student student = _studentService.GetStudentWithAssessments(studentId); Student studentWithAssessments = _studentService.GetEnrolledCourseAssessments(studentId); if (studentWithAssessments.StudentAssessments.FirstOrDefault(stdass => stdass.AssessmentId.Equals(id.Value)) == null) { return(RedirectToAction(nameof(Details), new { id = id.Value })); } foreach (var studentAssessment in student.StudentAssessments) { if (studentAssessment.AssessmentId.Equals(id.Value)) { if (studentAssessment.HasTaken) { return(RedirectToAction(nameof(Details), new { id = id.Value })); } } } } if (assessment == null) { return(NotFound()); } TakeAssessmentVM takeAssessmentVM = new TakeAssessmentVM { questions = assessment.Questions.ToArray() }; foreach (var question in takeAssessmentVM.questions) { question.CorrectOption = null; } return(View(takeAssessmentVM)); }
public IActionResult TakeAssessment(Guid?id, TakeAssessmentVM takeAssessmentVM) { int correctAnswers = 0; Assessment assessment = _assessmentService.GetAssessmentAndQuestionsById(id.Value); Question[] questions = assessment.Questions.ToArray(); Guid studentId = Guid.Parse(User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value); string answers = string.Empty; for (int i = 0; i < questions.Length; i++) { Question question = questions[i]; string optionIndexString = $"selectedAnswer[{i}]"; string option = Request.Form[optionIndexString]; if (option != null) { answers += option; if (question.CorrectOption.Equals(option)) { correctAnswers++; } } else { answers += "null"; } if (i < questions.Length - 1) { answers += "-"; } } _studentService.RegisterAssessmentPerformance(studentId, id.Value, correctAnswers, questions.Length); HttpContext.Response.Cookies.Append("Score", $"You scored {correctAnswers} / {questions.Length}"); HttpContext.Response.Cookies.Append("Answers", answers); HttpContext.Response.Cookies.Append("AssessmentId", assessment.Id.ToString()); return(RedirectToAction(nameof(Result))); }