Exemplo n.º 1
0
        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();
        }
Exemplo n.º 3
0
 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();
 }
Exemplo n.º 4
0
        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)
            });
        }
Exemplo n.º 5
0
        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)
            });
        }