예제 #1
0
        public async Task <ActionResult> SubmitAnswers(TrialExamAnswersResourceCollection questWithAnswers)
        {
            var examResultResource = new List <ExamResultResource>();

            if (questWithAnswers.ExamAnswersResourceList.Any())
            {
                var questions = await _questionService.GetAllAsync(0, int.MaxValue, x => x.Question, x => x.QuestionTypeId == questWithAnswers.QuestionType, OrderBy.Ascending, x => x.QuestionsLocalized);

                foreach (var eq in questions)
                {
                    var currentQuestionExistInTheExam = questWithAnswers.ExamAnswersResourceList.FirstOrDefault(x => x.QuestionId == eq.Id);
                    if (eq != null && currentQuestionExistInTheExam != null)
                    {
                        examResultResource.Add(
                            new ExamResultResource()
                        {
                            QuestionsResource = Mapper.Map <Questions, QuestionsResource>(eq),
                            SeletecdAnswer    = currentQuestionExistInTheExam != null ? currentQuestionExistInTheExam.Answer : 0
                        }
                            );
                    }
                }

                var TotalQuestions         = examResultResource.Count;
                var TotalQuestionsAttended = examResultResource.Count(x => x.SeletecdAnswer != 0);
                var TotalCorrectAnswered   = 0;
                var TotalInCorrectAnswers  = 0;
                //Status of Exam
                foreach (var result in examResultResource)
                {
                    if (result.QuestionsResource.Answer == result.SeletecdAnswer)
                    {
                        TotalCorrectAnswered++;
                    }
                    else
                    {
                        TotalInCorrectAnswers++;
                    }
                }

                ViewBag.TotalQuestions           = TotalQuestions;
                ViewBag.TotalQuestionsAttended   = TotalQuestionsAttended;
                ViewBag.TotalQuestionsUnAttended = TotalQuestions - TotalQuestionsAttended;
                ViewBag.TotalCorrectAnswered     = TotalCorrectAnswered;
                ViewBag.TotalInCorrectAnswers    = TotalInCorrectAnswers - (TotalQuestions - TotalQuestionsAttended);

                return(Json(new
                {
                    success = true,
                    result = ViewExtensions.RenderToString(PartialView("_ViewResults", examResultResource))
                }));
            }


            return(Json(new
            {
                success = false
            }));
        }
        public async Task <ActionResult> StartExam(ExamAnswersResourceCollection questWithAnswers)
        {
            var examResultResource = new List <ExamResultResource>();

            if (questWithAnswers.ExamAnswersResourceList.Any())
            {
                var exam = await _examservice.GetByIdAsync(questWithAnswers.ExamId);

                if (exam != null)
                {
                    var examQuestions = _examQuestionService.FindBy(i => i.ExamId == exam.Id);
                    foreach (var eq in examQuestions)
                    {
                        var questions = await _questionService.GetSingleIncludingAsync(Convert.ToInt32(eq.QuestionId), x => x.QuestionType, x => x.QuestionsLocalized);

                        if (questions != null)
                        {
                            examResultResource.Add(
                                new ExamResultResource()
                            {
                                QuestionsResource = Mapper.Map <Questions, QuestionsResource>(questions),
                                SeletecdAnswer    = questWithAnswers.ExamAnswersResourceList.FirstOrDefault(x => x.QuestionId == questions.Id) != null? questWithAnswers.ExamAnswersResourceList.FirstOrDefault(x => x.QuestionId == questions.Id).Answer:0
                            }
                                );
                        }
                    }

                    var TotalQuestions         = examResultResource.Count;
                    var TotalQuestionsAttended = examResultResource.Count(x => x.SeletecdAnswer != 0);
                    var TotalCorrectAnswered   = 0;
                    var TotalInCorrectAnswers  = 0;
                    //Status of Exam
                    foreach (var result in examResultResource)
                    {
                        if (result.QuestionsResource.Answer == result.SeletecdAnswer)
                        {
                            TotalCorrectAnswered++;
                        }
                        else
                        {
                            TotalInCorrectAnswers++;
                        }
                    }



                    //Insert Result
                    var resultEntity = new Result();
                    resultEntity.CreatedDate = DateTime.Now;
                    resultEntity.UpdatedDate = DateTime.Now;
                    var userId = User.Identity.GetUserId();
                    resultEntity.UserId = userId;
                    var passmark = _examservice.GetById(exam.Id).Passmark;
                    resultEntity.ResultStatus           = passmark <= TotalCorrectAnswered ? "Win" : "Fail";
                    resultEntity.Status                 = true;
                    resultEntity.TotalQuestions         = TotalQuestions;
                    resultEntity.TotalQuestionsAttended = TotalQuestionsAttended;
                    resultEntity.Mark   = TotalCorrectAnswered;
                    resultEntity.ExamId = exam.Id;
                    _resultService.Add(resultEntity);
                    _resultService.UnitOfWorkSaveChanges();

                    ViewBag.Passmark                 = passmark;
                    ViewBag.TotalQuestions           = TotalQuestions;
                    ViewBag.TotalQuestionsAttended   = TotalQuestionsAttended;
                    ViewBag.TotalQuestionsUnAttended = TotalQuestions - TotalQuestionsAttended;
                    ViewBag.TotalCorrectAnswered     = TotalCorrectAnswered;
                    ViewBag.TotalInCorrectAnswers    = TotalInCorrectAnswers - (TotalQuestions - TotalQuestionsAttended);
                    ViewBag.ResultStatus             = resultEntity.ResultStatus;

                    return(Json(new
                    {
                        success = true,
                        result = ViewExtensions.RenderToString(PartialView("_ViewResults", examResultResource))
                    }));
                }
            }
            return(Json(new
            {
                success = false
            }));
        }