Exemplo n.º 1
0
        public async Task <SaveDraftViewModel> Handle(SaveDraftCommand request, CancellationToken cancellationToken)
        {
            if (!await _questionsRepository.QuestionExists(request.QuestionId))
            {
                throw new InvalidQuestionException();
            }

            var draft = await _draftRepository.GetByQuestionAndUser(request.UserId, request.QuestionId);

            if (draft != null)
            {
                draft.Content  = request.Content;
                draft.DateTime = DateTime.Now;
                _draftRepository.Update(draft);
            }
            else
            {
                var newDraft = new Draft
                {
                    UserId     = request.UserId,
                    DateTime   = DateTime.Now,
                    Content    = request.Content,
                    QuestionId = request.QuestionId
                };

                await _draftRepository.AddAsync(newDraft);
            }

            await _unitOfWork.SaveChangesAsync(cancellationToken);

            return(new SaveDraftViewModel {
                Message = "Draft saved successfully."
            });
        }