コード例 #1
0
        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));
            }
        }
コード例 #2
0
        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"));
        }