示例#1
0
        public async Task Execute(IAccountRepository accountRepository)
        {
            var checksum = NumberAccountHelper.GetChecksum(_transferModel.AccountFrom);
            var number   = NumberAccountHelper.GetNumberAccount(_transferModel.AccountFrom);

            var accountFrom = await accountRepository.GetAccountByNumberAndCheckSumAsync(checksum, number);

            accountFrom.Balance -= _transferModel.GetAmount;

            /*
             * przed wysłaniem transferu do innego banku zapisanie stanu konta
             * (operaja może się nie udać, wówczas transfer do innego banku nie zostanie zrealizowany)
             * w przypadku wystąpienia problemów w innym banku operacja zostanie wycofana przez transakcję
             */

            await Save(accountRepository, accountFrom);

            if (NumberAccountHelper.IsAccountInMyBank(_transferModel.AccountTo))
            {
                var transferReceiver = new TransferReceiveOperationCommand(_transferModel);
                await transferReceiver.Execute(accountRepository);
            }
            else
            {
                await SendTransferToAnotherBank();
            }
        }