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); }