public CardPaymentFactory( IRepository <Account> accounts, IRepository <UserPaymentProfile> paymentProfiles, IRepository <Currency> currencies, IQueryRepository <CorrespondentAccount> correspondentAccounts, TransactionReferenceBook transactionReferenceBook, MoneyConverter moneyConverter, PaymentFormFactory paymentFormFactory) { Argument.NotNull(accounts, "accounts"); Argument.NotNull(paymentProfiles, "paymentProfiles"); Argument.NotNull(currencies, "currencies"); Argument.NotNull(correspondentAccounts, "correspondentAccounts"); Argument.NotNull(transactionReferenceBook, "transactionReferenceBook"); Argument.NotNull(moneyConverter, "moneyConverter"); Argument.NotNull(paymentFormFactory, "paymentFormFactory"); _settings = new BankSettings(); _currencies = currencies; _correspondentAccounts = correspondentAccounts; _paymentProfiles = paymentProfiles; _accounts = accounts; _transactionReferenceBook = transactionReferenceBook; _moneyConverter = moneyConverter; _paymentFormFactory = paymentFormFactory; }
internal BaseOperationProcessor(BaseOperationProcessorDependencies baseDependencies) { Argument.NotNull(baseDependencies, "baseDependencies"); baseDependencies.EnsureIsResolved(); Logger = LogManager.GetLogger(GetType().FullName); MoneyConverter = baseDependencies.MoneyConverter; TransactionRepository = baseDependencies.TransactionRepository; TransactionReferenceBook = baseDependencies.TransactionReferenceBook; Settings = new BankSettings(); }
public CardTransferFactory(IRepository <OperationCategory> operationCategories, TransactionReferenceBook transactionReferenceBook, MoneyConverter moneyConverter) { Argument.NotNull(operationCategories, "operationCategories"); Argument.NotNull(transactionReferenceBook, "transactionReferenceBook"); Argument.NotNull(moneyConverter, "moneyConverter"); _operationCategories = operationCategories; _transactionReferenceBook = transactionReferenceBook; _moneyConverter = moneyConverter; _settings = new BankSettings(); }
protected virtual IEnumerable <ApplicationEvent> WhenWithdrawalCompleted(Guid appOperationId, Transfer transfer) { var transactionName = TransactionReferenceBook.ForOperation(transfer); var depositTransaction = Deposit(transfer.To, transfer, transactionName.Code, transactionName.Description); transfer.SetDepositTransaction(depositTransaction); var transactionModel = depositTransaction.ToModel <Transaction, TransactionModel>(); TransferRepository.Update(transfer); return(new List <ApplicationEvent>() { new TransactionProgressEvent(appOperationId, transactionModel, transfer.Id) }); }
protected virtual IEnumerable <ApplicationEvent> WhenDepositFailed(Guid appOperationId, Transfer transfer) { transfer.Fail(string.Format(Messages.TransferFailed, transfer.Deposit.ErrorMessage)); var transactionName = TransactionReferenceBook.CompensationFor(transfer.Withdrawal); var compensationTransaction = Compensate(transfer.From, transfer, transactionName.Code, transactionName.Description); TransactionRepository.Create(compensationTransaction); TransferRepository.Update(transfer); var transactionModel = compensationTransaction.ToModel <Transaction, TransactionModel>(); return(new List <ApplicationEvent> { new TransactionProgressEvent(appOperationId, transactionModel, transfer.Id) }); }