Beispiel #1
0
        public async Task <ResultDTO> FinishTestAsync(UserAnswersDTO answersModel)
        {
            int correctAnswers = CountCorrectAnswers(answersModel.UserAnswers);
            var resultInfo     = new ResultDTO();
            var result         = new Result();

            try
            {
                result.User = await _userRepository.GetUserByNameAsync(answersModel.UserName);

                result.Test = await _testRepository.GetAsync(answersModel.TestId);

                result.DateFinished   = DateTime.UtcNow;
                result.CorrectAnswers = correctAnswers;
                result.TestFinished   = SetFinishedTestResult(answersModel.UserAnswers.Count, correctAnswers);

                await _resultRepository.AddResultAsync(result);

                resultInfo = _mapper.Map <ResultDTO>(result);
                resultInfo.TotalQuestions = answersModel.UserAnswers.Count;
                resultInfo.CorrectAnswers = correctAnswers;
                resultInfo.TestShortName  = await _testRepository.GetTestMinimizedNameAsync(answersModel.TestId);

                resultInfo.UserName = answersModel.UserName;
            }
            catch (Exception ex)
            {
                return(null);
            }

            return(resultInfo);
        }