public ActionResult Pass(long id) { var test = testsRepo.FindOne(new ByIdSpecify <Test>(id)); var model = new PassTestModel { Id = test.Id, Name = test.Name, Questions = new List <QuestionTest>() }; foreach (var q in test.Questions) { model.Questions.Add(new QuestionTest { Id = q.Id, QuestionValue = q.QuestionText, TimeToAnswer = q.TimeToAnswer, Answers = new List <AnswerTest>(q.Answers .Select(a => new AnswerTest { Id = a.Id, AnswerValue = a.AnswerText, IsCorrect = a.IsCorrect }).ToList()) }); } return(View(model)); }
public Statistic PassTest(PassTestModel passTest) { double percentage = CountPercentageOfRightAnswers(passTest.UserAnswers); TimeSpan time = DateTime.Now - passTest.BeginDate; Statistic statistic = new Statistic { TestId = passTest.TestId, UserId = passTest.UserId, Date = DateTime.Now, Time = new TimeSpan(time.Hours, time.Minutes, time.Seconds), Percentage = percentage, IsPassed = (percentage >= passTest.MinPercentage) }; if (statisticRepository.IsUserPassedTest(passTest.UserId, passTest.TestId)) { statisticRepository.Update(statistic); } else { statisticRepository.Create(statistic); } Statistic st = statisticRepository.GetStatistic(passTest.UserId, passTest.TestId); return(st); }
public ActionResult PassResult(PassTestModel model) { if (!ModelState.IsValid) { return(Json(new { isValid = false })); } var test = testsRepo.FindOne(new ByIdSpecify <Test>(model.Id)); var result = new TestResult { UserId = this.usersRepo.FindOne(new UserByLoginSpecify(User.Identity.Name)).Id, TestId = test.Id, PassDate = DateTime.Now }; testsResRepo.SaveOrUpdate(result); var correctAnswers = 0; foreach (var question in model.Questions) { var resultQuestion = new ResultQuestion { QuestionText = question.QuestionValue, TestResultId = result.Id }; qResRepo.SaveOrUpdate(resultQuestion); foreach (var answer in question.Answers) { if (answer.IsCorrect && answer.IsChoisen) { correctAnswers++; } var resultAnswer = new ResultAnswer { AnswerText = answer.AnswerValue, ResultQuestionId = resultQuestion.Id, IsCorrect = answer.IsCorrect, IsChoisen = answer.IsChoisen }; aResRepo.SaveOrUpdate(resultAnswer); //resultQuestion.ResultAnswers.Add(resultAnswer); } //result.ResultQuestions.Add(resultQuestion); } ViewBag.correctAnswers = correctAnswers; ViewBag.totalQuestios = model.Questions.Count; return(View()); }