public async Task <IActionResult> EditAnswer(AnswerForCreationDto answerDto)
        {
            var user = await _userRepository.GetUserByUsernameAsync(answerDto.Username);

            if (user != null)
            {
                var answer = _mapper.Map <Answer>(answerDto);
                answer.UserId = user.Id;
                _answerRepository.Edit(answer);
                if (await _answerRepository.SaveAll())
                {
                    return(Ok(_mapper.Map <AnswerToReturnDto>(answer)));
                }
            }
            throw new Exception("Nie znaleziono rozwiązania");
        }
        public async Task <IActionResult> CreateAnswer([FromBody] AnswerForCreationDto model)
        {
            // maps resource to a domain model
            var answer = _mapper.Map <Answer>(model);

            try
            {
                // create answer
                var answerCreated = await _answerService.Create(answer, model.QuestionId);

                return(Ok(_mapper.Map <AnswerDto>(answerCreated)));
            }
            catch (Exception ex)
            {
                // return error message if there was an exception
                return(BadRequest(new { message = ex.Message }));
            }
        }
        public async Task <IActionResult> AddAnswer(AnswerForCreationDto answerDto)
        {
            var user = await _userRepository.GetUserByUsernameAsync(answerDto.Username);

            var answer = _mapper.Map <Answer>(answerDto);

            answer.UserId = user.Id;

            if (user != null)
            {
                _answerRepository.Add <Answer>(answer);
                await _answerRepository.SaveAll();

                user.Answers.Add(answer);
                await _userRepository.SaveAll();

                return(Ok(_mapper.Map <AnswerToReturnDto>(answer)));
            }

            throw new Exception("Nie udało się dodać rozwiązania");
        }
        public async Task <IActionResult> CreateAnswerAsync(int questionId, AnswerForCreationDto answerforCreation)
        {
            var questionFromRepo = await _repo.QuestionRepository.GetQuestionAsync(questionId);

            if (questionFromRepo == null)
            {
                return(BadRequest("Question not found"));
            }
            if (questionFromRepo.Exam.AuthorId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized());
            }
            var answer = _mapper.Map <Answer>(answerforCreation);

            answer.QuestionId = questionId;
            _repo.AnswerRepository.Add(answer);
            if (await _repo.SaveAllAsync())
            {
                var answerForReturn = _mapper.Map <AnswerForReturnDto>(answer);
                return(CreatedAtRoute("GetAnswerAsync", new { answerId = answer.Id }, answerForReturn));
            }
            return(BadRequest("Failed to save an answer"));
        }