public override async Task <CommandResult> ProcessAsync(UpdateQuestion command)
        {
            var originalQuestion = await _reader.GetAsync(command.UpdatedQuestion.Id);

            if (originalQuestion == null)
            {
                throw new DomainValidationException(command.Id, "This question doesn't exist", 15)
                      {
                          Suggestion = "Create this question as a new question"
                      }
            }
            ;

            var question = _domainValidator.FromDto(command.UpdatedQuestion, command.Id);

            question.Update(originalQuestion.Id,
                            originalQuestion.CreatedBy,
                            originalQuestion.CreatedOn,
                            command.UpdatedQuestion.LastModifiedBy);
            var document = _dtoParser.Create(question);

            await _writer.CreateOrUpdateAsync(document);

            return(new IdentityResult(command.Id, originalQuestion.Id));
        }
    }
Beispiel #2
0
        public override async Task <CommandResult> ProcessAsync(AddQuestion command)
        {
            var id       = Guid.NewGuid().ToString();
            var question = _domainValidator.FromDto(command.NewQuestion, command.Id);

            question.Save(id, command.NewQuestion.CreatedBy);
            var document = _dtoParser.Create(question);

            await _writer.CreateOrUpdateAsync(document);

            return(new IdentityResult(command.Id, id));
        }