Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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();
        }