public ActionResult Exam(ExamLiveViewModel Exam) { ModelState.Clear(); ExamLiveViewModel ViewModel = JsonConvert.DeserializeObject <ExamLiveViewModel>(Exam.LiveModelJson); ViewModel.Answer = Exam.Answer; ViewModel.StudentId = Exam.StudentId; ViewModel.ModuleId = Exam.ModuleId; ViewModel.CurrentQuestionId = Exam.CurrentQuestionId; ViewModel.TotalMarks = Exam.TotalMarks; if (ViewModel.Answer.Equals(ViewModel.ExamQuestions[ViewModel.CurrentQuestionId].Question.Answer)) { ViewModel.ExamQuestions[ViewModel.CurrentQuestionId].IsCorrect = true; ViewModel.ExamQuestions[ViewModel.CurrentQuestionId].IsCompleted = true; ViewModel.TotalMarks = ViewModel.TotalMarks + 1; } else { ViewModel.ExamQuestions[ViewModel.CurrentQuestionId].IsCorrect = false; ViewModel.ExamQuestions[ViewModel.CurrentQuestionId].IsCompleted = true; } ViewModel.CurrentQuestionId++; if (ViewModel.CurrentQuestionId < ViewModel.ExamQuestions.Count()) { ViewModel.Question = ViewModel.ExamQuestions[ViewModel.CurrentQuestionId].Question.Question; string[] Answers = { ViewModel.ExamQuestions[ViewModel.CurrentQuestionId].Question.Answer, ViewModel.ExamQuestions[ViewModel.CurrentQuestionId].Question.AlternateAnsOne, ViewModel.ExamQuestions[ViewModel.CurrentQuestionId].Question.AlternateAnsTwo, ViewModel.ExamQuestions[ViewModel.CurrentQuestionId].Question.AlternateAnsThree }; Random rnd = new Random(); Answers = Answers.OrderBy(x => rnd.Next()).ToArray(); ViewModel.Answers = Answers; ViewModel.LiveModelJson = JsonConvert.SerializeObject(ViewModel); return(View("Exam", ViewModel)); } else { ViewModel.TotalMarks = (int)(((ViewModel.TotalMarks * 1.0) / ViewModel.ExamQuestions.Count()) * 100); var exam = DB.GetExam(ViewModel.StudentId, ViewModel.ModuleId); exam.Attempts++; exam.Marks = ViewModel.TotalMarks; DB.UpdateExam(exam); ViewModel.Attempt = exam.Attempts; return(View("Results", ViewModel)); } }
public ActionResult Exam(int mid, int sid) { var exam = DB.GetExam(sid, mid); if (exam.Attempts < 3 || exam.Marks < 50) { List <QuestionModel> questions = DB.GetRanQuestions(mid); if (questions.Count() < 15) { return(View("LowQuestions")); } List <ExamQuestionModel> examQuestions = new List <ExamQuestionModel>(); foreach (var item in questions) { examQuestions.Add(new ExamQuestionModel() { Question = item, IsCompleted = false, IsCorrect = false }); } ExamLiveViewModel LiveModel = new ExamLiveViewModel() { StudentId = sid, ModuleId = mid, ExamQuestions = examQuestions }; LiveModel.Question = LiveModel.ExamQuestions[LiveModel.CurrentQuestionId].Question.Question; string[] Answers = { LiveModel.ExamQuestions[LiveModel.CurrentQuestionId].Question.Answer, LiveModel.ExamQuestions[LiveModel.CurrentQuestionId].Question.AlternateAnsOne, LiveModel.ExamQuestions[LiveModel.CurrentQuestionId].Question.AlternateAnsTwo, LiveModel.ExamQuestions[LiveModel.CurrentQuestionId].Question.AlternateAnsThree }; Random rnd = new Random(); Answers = Answers.OrderBy(x => rnd.Next()).ToArray(); LiveModel.Answers = Answers; LiveModel.LiveModelJson = JsonConvert.SerializeObject(LiveModel); return(View(LiveModel)); } return(View("Error")); }