Beispiel #1
0
        private bool TestWasSentOnTime(TestStat startTestData, TestStatDTO endTestData)
        {
            int testDurMin       = startTestData.Test.DurationMin;
            int actualTestDurMin = (endTestData.EndTime - DateTime.Now).Minutes - 1;

            return(actualTestDurMin <= testDurMin);
        }
Beispiel #2
0
        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();
        }
Beispiel #3
0
        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());
        }
Beispiel #4
0
        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());
        }
Beispiel #5
0
        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();
            }
        }
Beispiel #6
0
        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);
        }