public ConsumerWebBusinessLogic(QuoteHeader qHeader, IQuoteConfiguration config)
        {
            this.qHeader = qHeader;
            this.controlData = new List<ControlDataSource>();

            DataBinder = new BusinessLogicSessionDataBinder();
            DNQInterface = new BusinessLogicDNQInterface();
            ServiceInterface = new BusinessLogicServiceInterface();
            PurchaseProcessor = new BusinessLogicPurchaseProcessor();
            ABTestInterface = new BusinessLogicABTestInterface();
            ContactCustomerCareProcessor = new BusinessLogicCustCareProcessor();
            MultiRateProcessor = new BusinessLogicMultirateProcessor(ServiceInterface, false);
            PartnerConfiguration = config;

            this.Accept(DataBinder);
            this.Accept(DNQInterface);
            this.Accept(ServiceInterface);
            this.Accept(PurchaseProcessor);
            this.Accept(ABTestInterface);
            this.Accept(ContactCustomerCareProcessor);
            this.Accept(MultiRateProcessor);
        }
        public BillingOptions GetBillingOptions()
        {
            this.Log("GetBillingOptions - Start... Inspection Result value = " + this.BusinessLogic().Quote.InspectionResult.ToString());

            BusinessLogicPurchaseProcessor Purchase = new BusinessLogicPurchaseProcessor();
            this.Accept<BusinessLogicPurchaseProcessor>(Purchase);

            BusinessLogicSessionDataBinder data = new BusinessLogicSessionDataBinder();
            this.Accept<BusinessLogicSessionDataBinder>(data);

            data.RefreshDataObjects();

            this.Log("GetBillingOptions - DataObjects refreshed... Inspection Result value = " + this.BusinessLogic().Quote.InspectionResult.ToString());

            int propertyType = 0;

            Structure structure = Structure.GetStructure(QHeader.SessionId);

            if (!String.IsNullOrEmpty(structure.PropertyType))
            {
                propertyType = Convert.ToInt32(structure.PropertyType);
            }
            //QC#285 - getting RatingDate
            DateTime? policyEffectiveDt = Convert.ToDateTime(data.Coverage.PolicyEffDate);
            LookupProvider lookupProvider = new LookupProvider();
            DateTime? ratingDate = lookupProvider.GetRatingDate(policyEffectiveDt,
                                                      data.Quote.InitialQuoteRequestDt,
                                                      QHeader.State);

            Homesite.IQuote.Data.ISODataProvider.hssp_GetInstallmentDataDataTable installmentDataTable =
                QuoteServices.GetInstallmentDataTable(data.Quote.CompanysQuoteNumber, QHeader.State, Convert.ToDecimal(data.Quote.PolicyPremiumAmt),
                Convert.ToDateTime(ratingDate), propertyType);

            BillingOptions billingOptions = new BillingOptions();

            foreach (Homesite.IQuote.Data.ISODataProvider.hssp_GetInstallmentDataRow row in installmentDataTable.Rows)
            {
                if (row.NumOfInstallments == 0)
                {
                    billingOptions.FullPremium = String.Format("{0:$###,###,##0.00}", row.NewDownPayment);
                }
                else if (row.NumOfInstallments == 1)
                {
                    billingOptions.DownPayment_2Pay = String.Format("{0:$###,###,##0.00}", row.NewDownPayment);
                    billingOptions.PaymentAmt_2Pay = String.Format("{0:$###,###,##0.00}", row.Installment);
                }
                else if (row.NumOfInstallments == 3)
                {
                    billingOptions.DownPayment_4Pay = String.Format("{0:$###,###,##0.00}", row.NewDownPayment);
                    billingOptions.PaymentAmt_4Pay = String.Format("{0:$###,###,##0.00}", row.Installment);
                }
                else if (row.NumOfInstallments == 9)
                {
                    billingOptions.DownPayment_10Pay = String.Format("{0:$###,###,##0.00}", row.NewDownPayment);
                    billingOptions.PaymentAmt_10Pay = String.Format("{0:$###,###,##0.00}", row.Installment);
                }
                else if (row.NumOfInstallments == 11)
                {
                    billingOptions.DownPayment_12Pay = String.Format("{0:$###,###,##0.00}", row.NewDownPayment);
                    billingOptions.PaymentAmt_12Pay = String.Format("{0:$###,###,##0.00}", row.Installment);
                }
            }

            this.Log("GetBillingOptions - end... Inspection Result value = " + this.BusinessLogic().Quote.InspectionResult.ToString());

            return billingOptions;
        }