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));
        }
예제 #2
0
        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()));
        }