示例#1
0
        public async Task Handle(CompleteMoneyTransferCommand message, IMessageHandlerContext context)
        {
            log.Info($"CompleteMoneyTransferCommand, TransferId = {message.TransferId}");
            var nhibernateSession = context.SynchronizedStorageSession.Session();
            var transferAggregate = nhibernateSession.Get <Transfer>(message.TransferId);

            transferAggregate.Complete();
            transferAggregate.ChangeUpdateAtUtc();
            nhibernateSession.Save(transferAggregate);
            var moneyTransferCompletedEvent = new MoneyTransferCompletedEvent
                                              (
                message.TransferId
                                              );
            await context.Publish(moneyTransferCompletedEvent);
        }
示例#2
0
        public async Task Handle(CompleteMoneyTransferCommand message, IMessageHandlerContext context)
        {
            log.Info($"CompleteMoneyTransferCommand, TransferId = {message.TransferId}");
            var nhibernateSession = context.SynchronizedStorageSession.Session();
            var transferAggregate = nhibernateSession.Get <Transfer>(message.TransferId);

            transferAggregate.Complete();
            transferAggregate.ChangeUpdateAtUtc();
            nhibernateSession.Save(transferAggregate);
            var moneyTransferCompletedEvent = new MoneyTransferCompletedEvent
                                              (
                message.TransferId
                                              );
            await context.Publish(moneyTransferCompletedEvent);

            var queryTransferEvent = new QueryTransferEvent(
                transferAggregate.TransferId,
                transferAggregate.SourceAccountId.Id.ToString(),
                transferAggregate.DestinationAccountId.Id.ToString(),
                transferAggregate.Amount.Amount
                );
            await context.Publish(queryTransferEvent);
        }
 public void Apply(MoneyTransferCompletedEvent aggregateEvent)
 {
     Complete();
 }