public ActionResult PassingTest(PassingTestViewModel model) { bool isSuccess = false; var test = testService.GetById(model.Id); int userId = userService.GetOneByPredicate(u => u.UserName == User.Identity.Name).Id; var testResults = testService.CheckAnswers(model.Id, model.Results); var runtime = (DateTime.UtcNow - model.StartTest); if (testResultService.CheckPercentAnswers(testResults, test.MinToSuccess) && testResultService.CheckTime(test.TimeLimit, runtime)) { isSuccess = true; } var bllTestResult = new BllTestResult { TestId = model.Id, UserId = userId, Runtime = runtime, DateComplete = DateTime.Now, IsSuccess = isSuccess, Results = testResults.ToList() }; testResultService.Create(bllTestResult); var mvcTestResult = bllTestResult.ToMvcStatistics(); mvcTestResult.TimeLimit = test.TimeLimit; mvcTestResult.MinToSuccess = test.MinToSuccess; mvcTestResult.PercentCorrectAnswers = testResultService.GetPercentGoodAnswers(testResults); if (Request.IsAjaxRequest()) { return(PartialView("_Statistics", mvcTestResult)); } return(View("_Statistics", mvcTestResult)); }
public ActionResult Passing(PassingViewModel model) { int checkeTestTime = (DateTime.Now - model.StartPassingTest).Minutes * 60 + (DateTime.Now - model.StartPassingTest).Seconds - 10; if (checkeTestTime > model.Time * 60) { return(Redirect(Url.Action("NotCompleteTest", "Error"))); } var resultModel = _testService.CheckAnswers(model.ToBllTest()); var entityTest = _testService.GetTest(model.Id); entityTest.GoodAnswers += resultModel.GoodAnswers; entityTest.BadAnswers += resultModel.BadAnswers; _testService.UpdateTest(entityTest); resultModel.Name = entityTest.Name; resultModel.User = _userService.GetUserByEmail(User.Identity.Name); resultModel.DateCompleted = DateTime.Now; _testResultService.CreateTestResult(resultModel); return(RedirectToAction("TestComplete", resultModel.ToMvcTestComplete())); }