private bool TestWasSentOnTime(TestStat startTestData, TestStatDTO endTestData) { int testDurMin = startTestData.Test.DurationMin; int actualTestDurMin = (endTestData.EndTime - DateTime.Now).Minutes - 1; return(actualTestDurMin <= testDurMin); }
public void StartTest(TestStatDTO startTestData) { _unitOfWork.TestStatistics.DeleteNotFinishedTestStatisticsByUserId(startTestData.UserId); startTestData.StartTime = DateTime.Now; TestStat stat = _mapper.Map <TestStat>(startTestData); _unitOfWork.TestStatistics.Add(stat); _unitOfWork.SaveChanges(); }
public IHttpActionResult StartTest([FromBody] StartTestBindingModel stat) { TestStatDTO newTestStat = new TestStatDTO() { TestId = stat.TestId, UserId = int.Parse(User.Identity.GetUserId()), }; _testStatService.StartTest(newTestStat); return(this.Ok()); }
public IHttpActionResult SaveCompletedTest([FromBody] FinishTestBindingModel stat) { TestStatDTO testStat = new TestStatDTO() { TestId = stat.TestId, UserId = int.Parse(User.Identity.GetUserId()), Answers = stat.Answers }; _testStatService.SaveCompletedTest(testStat); return(this.Ok()); }
public void SaveCompletedTest(TestStatDTO endTestData) { endTestData.Result = this.CalculateTestResult(endTestData); TestStat startedTestData = _unitOfWork.TestStatistics.GetNotFinishedTestByUserId(endTestData.UserId); if (this.TestWasSentOnTime(startedTestData, endTestData)) { startedTestData.Result = endTestData.Result; startedTestData.EndTime = DateTime.Now; startedTestData.Answers = _mapper.Map <ICollection <Answer> >(endTestData.Answers); _unitOfWork.TestStatistics.Update(startedTestData); _unitOfWork.SaveChanges(); } }
private int CalculateTestResult(TestStatDTO entity) { List <Question> allQuestions = (List <Question>)_unitOfWork.Questions.GetQuestionsWithOptionsByTestId(entity.TestId); int numOfRightAnsw = 0; foreach (AnswerDTO answer in entity.Answers) { answer.PointValue = this.GetPointForAnswer(answer, allQuestions); if (answer.PointValue == 1) { numOfRightAnsw++; } } return(numOfRightAnsw * 100 / entity.Answers.Count); }