public AjaxResponse ReCalculate(QuoteHeader qHeader, QuoteData qData)
        {
            this.QHeader = qHeader;
            this.QData = qData;

            // This is to fix an issue where walmart validates email and user changes it.
            if (this.QHeader.PartnerId.Equals(2319))
            {
                QuoteServices quoteServices = new QuoteServices();
                if (!quoteServices.ValidateEmailVerificationCode(this.QHeader.QuoteNumber, QData.cvgPartnerDiscount))
                {

                    if (QData.cvgPartnerDiscount != null)
                    {
                        this.QHeader.OLSStatus = OlsStatusPaperlessStoredId;
                        this.QData.cvgPartnerDiscount = String.Empty;
                    }
                    else
                    {
                        this.QHeader.OLSStatus = OlsStatusPaperlessStoredIdNegative;
                    }
                }
            }

            switch (QHeader.FormCode)
            {
                case 3:
                    if (QData.cvgDeductible != null)
                    {
                        UpdateWindHailOrHurricaneValues(QData.cvgDeductible);
                    }
                    break;
                case 4:
                    if (QData.propertyCoverageDeductible != null)
                    {
                        UpdateWindHailOrHurricaneValues(QData.propertyCoverageDeductible);
                    }
                    break;
            }

            this.DataBinder.BindCoverageData();

            this.BusinessLogic().Quote.ApexBillingOption = this.QHeader.ApexBillingOption;
            this.BusinessLogic().Quote.Save();
            // do rating
            this.ServiceInterface.CallRatingService();

            //call logging ITR#5549
            LogRateChangeEvent(2);

            DoCompleteQuoteSave();

            // return response
            AjaxResponse response = new AjaxResponse();

            //ITR#8181 Apex
            if (qHeader.IsApexState)
            {
                response.WindoidContentList = QuoteServices.GetQuoteSummary(this.BusinessLogic().Header, this.BusinessLogic().Quote, this.BusinessLogic().Coverage);
                response.WindoidContent = QuoteServices.GetQuoteSummaryFromList(response.WindoidContentList, quote.ApexBillingOption);
            }
            else
            {
                response.WindoidContent = QuoteServices.GetQuoteSummary(this.BusinessLogic().Header, this.BusinessLogic().Quote, this.BusinessLogic().Coverage, this.BusinessLogic().Structure.PropertyType, this.BusinessLogic().QHeader.H04Ui_V2);
            }
            response.quoteHeader = this.BusinessLogic().QHeader;
            response.NextPanel = AjaxPanel.Coverage;

            return response;
        }