public async Task Handle(DepositMoneyCommand message, IMessageHandlerContext context) { log.Info($"DepositMoneyCommand, TransferId = {message.TransactionId}"); var nhibernateSession = context.SynchronizedStorageSession.Session(); var accountAggregate = nhibernateSession.Get <Account>(message.AccountId); if (accountAggregate == null) { var destinationAccountNotFoundEvent = new DestinationAccountNotFoundEvent(message.TransactionId); await context.Publish(destinationAccountNotFoundEvent); } else { accountAggregate.DepositMoney(message.Amount); accountAggregate.ChangeUpdateAtUtc(); nhibernateSession.Save(accountAggregate); var moneyDepositedEvent = new MoneyDepositedEvent ( message.AccountId, message.TransactionId, message.Amount, accountAggregate.Balance.Amount, accountAggregate.Sobregiro_disponible.Amount ); await context.Publish(moneyDepositedEvent); } }
public async Task Handle(DestinationAccountNotFoundEvent message, IMessageHandlerContext context) { log.Info($"DestinationAccountNotFoundEvent, TransactionId = {message.TransactionId}"); var returnMoneyCommand = new ReturnMoneyCommand( Data.SourceAccountId, Data.Amount ); await context.Send(returnMoneyCommand).ConfigureAwait(false); var rejectMoneyTransferCommand = new RejectMoneyTransferCommand( Data.TransferId ); await context.SendLocal(rejectMoneyTransferCommand).ConfigureAwait(false); MarkAsComplete(); }