Ejemplo n.º 1
0
        private string GetBankAccountNumber(Core.Models.OnlinePayments.Customer.EF.CustomerBank bank)
        {
            string ret = BANK_RESOLVE_UNDEFINED;

            if (bank != null && bank.AccountNumber != null)
            {
                ret = bank.Name;
            }
            return(ret);
        }
Ejemplo n.º 2
0
        private void InPaymentSummaryAccountForMultiplePaymentAccountsWithOneCustomer
            (StringBuilder orderDetails, decimal paymentSum, Core.Models.OnlinePayments.Customer.EF.CustomerBank bankUsed)
        {
            if (bankUsed != null)
            { // not sure if this happens, but wanted to provide for it just in case
              // if bankused is not null but the bank account used changes, then we close out the table
              // for the previous account
                ApplyAccountPaymentSummaryTemplate(orderDetails, bankUsed, paymentSum);

                ApplyEndFooterTemplate(orderDetails);
            }
        }
Ejemplo n.º 3
0
        private void ApplyAccountPaymentSummaryTemplate
            (StringBuilder orderDetails, Core.Models.OnlinePayments.Customer.EF.CustomerBank bankUsed, decimal paymentSum)
        {
            // the following appends a summation of the account used
            MessageTemplateModel footerAccountTemplate = _messageTemplateLogic.ReadForKey
                                                             (Constants.MESSAGE_TEMPLATE_MULTI_PAYMENTFOOTERACCOUNT);

            orderDetails.Append(footerAccountTemplate.Body.Inject(new
            {
                BankName      = GetBankName(bankUsed),
                AccountNumber = GetBankAccountNumber(bankUsed),
                AccountSum    = paymentSum
            }));
        }
Ejemplo n.º 4
0
        private Core.Models.OnlinePayments.Customer.EF.CustomerBank BuildPaymentSummaryBankUsed(StringBuilder orderDetails, decimal paymentSum, Core.Models.OnlinePayments.Customer.EF.CustomerBank bankUsed, Core.Models.OnlinePayments.Customer.EF.CustomerBank bank)
        {
            if (bankUsed == null || bankUsed.AccountNumber.Equals(bank.AccountNumber) == false)
            {
                InPaymentSummaryAccountForMultiplePaymentAccountsWithOneCustomer
                    (orderDetails, paymentSum, bankUsed);

                bankUsed = bank;

                ApplyPaymentSummaryAccountHeaderTemplate(orderDetails, bankUsed);
            }

            return(bankUsed);
        }
Ejemplo n.º 5
0
        private Message GetEmailMessageForMultipleAccountSummaryNotification
            (List <PaymentTransactionModel> payments, List <UserSelectedContext> customers)
        {
            StringBuilder orderDetails = new StringBuilder();

            int      confirmationId = 0, customerNumber = 0;
            string   payer         = null;
            decimal  grandSum      = 0;
            DateTime submittedDate = DateTime.MinValue;

            foreach (var customer in customers.OrderBy(ctx => ctx.CustomerId))
            { // the start of each customer
                ++customerNumber;

                Svc.Core.Models.Profile.Customer cust =
                    _customerRepo.GetCustomerByCustomerNumber(customer.CustomerId, customer.BranchId);

                int     paymentNumber = 0;
                decimal paymentSum    = 0;
                Core.Models.OnlinePayments.Customer.EF.CustomerBank bankUsed = null;

                foreach (var payment in payments.Where(p => p.CustomerNumber == customer.CustomerId &&
                                                       p.BranchId == customer.BranchId)
                         .OrderBy(p => p.AccountNumber))
                {
                    paymentNumber++;

                    Core.Models.OnlinePayments.Customer.EF.CustomerBank bank = _bankRepo.GetBankAccount
                                                                                   (DivisionHelper.GetDivisionFromBranchId(customer.BranchId),
                                                                                   customer.CustomerId, payment.AccountNumber);
                    bankUsed = BuildPaymentSummaryBankUsed(orderDetails, paymentSum, bankUsed, bank);

                    paymentSum = paymentSum + payment.PaymentAmount;
                    grandSum   = grandSum + payment.PaymentAmount;

                    confirmationId = payment.ConfirmationId;
                    payer          = payment.UserName;
                    submittedDate  = payment.PaymentDate.Value;

                    BuildPaymentSummaryPaymentDetails(orderDetails, customer, cust, paymentNumber, payment);
                }
                BuildPaymentSummaryFooter(orderDetails, cust, paymentSum, bankUsed);
            }
            ApplyGrandPaymentSummaryTemplate(orderDetails, grandSum, submittedDate);

            return(AssembleMessageForPayerSummary(orderDetails, confirmationId, payer));
        }
Ejemplo n.º 6
0
        private void ApplyPaymentSummaryAccountHeaderTemplate(StringBuilder orderDetails, Core.Models.OnlinePayments.Customer.EF.CustomerBank bankUsed)
        {
            // this starts a table for the new account
            MessageTemplateModel headerTemplate = _messageTemplateLogic.ReadForKey
                                                      (Constants.MESSAGE_TEMPLATE_MULTI_PAYMENTHEADER);

            orderDetails.Append(headerTemplate.Body.Inject(new
            {
                BankName      = GetBankName(bankUsed),
                AccountNumber = GetBankAccountNumber(bankUsed)
            }));
        }
Ejemplo n.º 7
0
        private void BuildPaymentSummaryFooter(StringBuilder orderDetails, Core.Models.Profile.Customer cust, decimal paymentSum, Core.Models.OnlinePayments.Customer.EF.CustomerBank bankUsed)
        {
            ApplyAccountPaymentSummaryTemplate(orderDetails, bankUsed, paymentSum);

            ApplyCustomerPaymentSummaryTemplate(orderDetails, cust, paymentSum);

            ApplyEndFooterTemplate(orderDetails);
        }