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