public void Handle(MoneyTransferCommand command)
        {
            var bankAccountFrom = _bankAccountRepository.GetById(command.SenderAccountId);

            BusinessRuleChecker.Handle(new IsTransferedAmountOfMoneyAvailableBusinessRule(bankAccountFrom, command));

            bankAccountFrom.Balance -= command.Amount;

            _bankAccountRepository.Update(bankAccountFrom);
            _eventBus.Publish(new MoneyTransferedEvent(command.SenderAccountId, command.Amount, TransferMoneyStatus.SEND));

            var bankAccountTo = _bankAccountRepository.GetById(command.ReceiverAccountId);

            bankAccountTo.Balance += command.Amount;

            _bankAccountRepository.Update(bankAccountTo);
            _eventBus.Publish(new MoneyTransferedEvent(command.ReceiverAccountId, command.Amount, TransferMoneyStatus.RECEIVE));
        }
 public void TransferedAmountShouldntBeLessThanActualBalance()
 {
     BusinessRuleChecker.Handle(new IsTransferedAmountOfMoneyAvailableBusinessRule(_bankAccountFrom, _moneyTransferCommand));
 }