protected override Task <CommandResult <Guid> > ExecuteCommand(AddUserCommand command, CancellationToken cancellationToken)
        {
            var agg = UserEntityBasedAggregationRoot.CreateFrom(command.Name, command.Mail);

            var isSucceed = agg.IsValid;
            var okId      = Guid.Empty;

            if (agg.IsValid)
            {
                agg.GetEvents().ToImmutableList()
                .ForEach(ev => Publisher.Publish(ev));

                okId = agg.GetChange().Identity.Value;
            }

            return(Task.FromResult(new CommandResult <Guid>(isSucceed, okId, agg.Failures)));
        }
Beispiel #2
0
        protected override async Task <CommandResult <Guid> > ExecuteCommand(AddUserCommand command, CancellationToken cancellationToken)
        {
            var agg = UserEntityBasedAggregationRoot.CreateFrom(command.Name, command.Mail);

            var isSucceed = agg.ValidationResults.IsValid;
            var okId      = Guid.Empty;

            if (agg.ValidationResults.IsValid)
            {
                _sessionDb.Repository.Add(agg.GetChange());
                await _sessionDb.SaveChangesAsync(cancellationToken);

                agg.GetEvents().ToImmutableList()
                .ForEach(async ev => await Publisher.Publish(ev, cancellationToken));

                okId = agg.GetChange().Id.Value;
            }

            return(await Task.FromResult(new CommandResult <Guid>(isSucceed, okId, agg.ValidationResults.Errors.ToImmutableList()))
                   .ConfigureAwait(false));
        }