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(); } }