public static Answer CreateAnswerFromDto(this AnswerCreateOrUpdateDto answer) { return(new Answer { Content = answer.Content, Key = answer.Key, }); }
public async Task <IActionResult> CreateAnswer(int number, AnswerCreateOrUpdateDto answer) { try { var answerEntity = answer.CreateAnswerFromDto(); var question = await _repository.GetQuestionByNumberAsync(number, true); if (question == null) { return(NotFound($"Could not find any question number: {number}")); } if (answer == null) { return(BadRequest("Answer is required")); } if (question.Answers == null) { question.Answers = new List <Answer>(); } var existing = await _repository.GetAnswerAsync(number, answer.Key); if (existing != null) { return(BadRequest("Answer in use")); } question.Answers.Add(answerEntity); _repository.Update(question); if (!await _unitOfWork.SaveChangeAsync()) { return(BadRequest()); } return(CreatedAtRoute(nameof(GetByAnswerKey), new { number = question.Number, key = answerEntity.Key }, answerEntity.MapToReadDto())); } catch (Exception) { return(StatusCode(StatusCodes.Status500InternalServerError, "Database failure")); } }
public async Task <IActionResult> UpdateAnswer(int number, int key, AnswerCreateOrUpdateDto answer) { try { var question = await _repository.GetQuestionByNumberAsync(number, true); if (question == null) { return(NotFound($"Could not find any question number: {number}")); } if (answer == null) { return(BadRequest("Answer is required")); } var answerToUpdate = await _repository.GetAnswerAsync(number, key); if (answerToUpdate == null) { return(BadRequest($"Could not find any answer with key of {key}")); } answerToUpdate.UpdateAnswerFromDto(answer); _repository.UpdateAnswer(answerToUpdate); if (!await _unitOfWork.SaveChangeAsync()) { return(BadRequest()); } return(NoContent()); } catch (Exception) { return(StatusCode(StatusCodes.Status500InternalServerError, "Database failure")); } }
public static void UpdateAnswerFromDto(this Answer entity, AnswerCreateOrUpdateDto dto) { entity.Content = !string.IsNullOrWhiteSpace(dto.Content) ? dto.Content : entity.Content; entity.Key = dto.Key > 0 ? dto.Key : entity.Key; }