public static XElement UpdateCoveragesAndDiscounts(WebSession session)
        {
            XElement response;
            XElement request = XElement.Parse("<Request><Guid>" + session.Guid.ToString() + "</Guid></Request>");

            XMLSyncProcess process = new XMLSyncProcess(new XMLSyncHeader("UD3Plugin", "AutoQuoteServices", "LoadQuote"), request);

            using (ProcessWCF client = new ProcessWCF())
            {
                try
                {
                    response = client.Execute(process);
                    if (response == null)
                    {
                        return(null);
                    }
                    if (response.Element("Coverages") != null)
                    {
                        if (response.Element("Coverages").Element("PolicyCoverages") != null)
                        {
                            foreach (XElement covElement in response.Element("Coverages").Element("PolicyCoverages").Elements())
                            {
                                Coverage cov = session.PolicyCoverages.Find(c => c.CovCode == covElement.GetValue("CovCode"));
                                if (cov != null)
                                {
                                    if (covElement.Element("Limits") != null)
                                    {
                                        if (covElement.Element("Limits").Element("SelectedLimitValue") != null)
                                        {
                                            covElement.Element("Limits").Element("SelectedLimitValue").Value = cov.SelectedLimit.Value;
                                        }
                                    }
                                }
                            }
                        }
                        if (response.Element("Coverages").Element("VehicleCoverages") != null)
                        {
                            foreach (XElement vehElement in response.Element("Coverages").Element("VehicleCoverages").Elements("Vehicle"))
                            {
                                VehicleCoverage vc = session.VehicleCoverages.Find(v => v.VehicleNumber == vehElement.GetValue("VehIndex"));
                                foreach (XElement covElement in vehElement.Elements("Coverage"))
                                {
                                    Coverage cov = vc.Coverages.Find(c => c.CovCode == covElement.GetValue("CovCode"));
                                    if (cov != null)
                                    {
                                        if (covElement.Element("Limits") != null)
                                        {
                                            covElement.Element("Limits").Element("SelectedLimitValue").Value = cov.SelectedLimit.Value;
                                        }
                                    }
                                }
                            }
                        }

                        if (response.Element("Coverages").Element("EnhancedCoverages") != null)
                        {
                            foreach (XElement covElement in response.Element("Coverages").Element("EnhancedCoverages").Elements())
                            {
                                Coverage cov = session.EnhancedCoverages.Find(c => c.CovCode == covElement.GetValue("CovCode"));
                                if (cov != null)
                                {
                                    if (covElement.Element("Purchased") != null)
                                    {
                                        covElement.Element("Purchased").Value = cov.Purchased ? "true" : "false";
                                        switch (cov.CovCode)
                                        {
                                        case "Bundle1":
                                            if (cov.Purchased)
                                            {
                                                ((WebSessionDRC)session).Quote.getPolicyInfo().setBundle1Test(1);
                                            }
                                            else
                                            {
                                                ((WebSessionDRC)session).Quote.getPolicyInfo().setBundle1Test(0);
                                            }
                                            break;

                                        case "Bundle2":
                                            if (cov.Purchased)
                                            {
                                                ((WebSessionDRC)session).Quote.getPolicyInfo().setBundle2Test(1);
                                            }
                                            else
                                            {
                                                ((WebSessionDRC)session).Quote.getPolicyInfo().setBundle2Test(0);
                                            }
                                            break;

                                        case "Bundle3":
                                            if (cov.Purchased)
                                            {
                                                ((WebSessionDRC)session).Quote.getPolicyInfo().setBundle3Test(1);
                                            }
                                            else
                                            {
                                                ((WebSessionDRC)session).Quote.getPolicyInfo().setBundle3Test(0);
                                            }
                                            break;
                                        }
                                    }
                                }
                            }
                        }
                    }

                    //StringBuilder sb = new StringBuilder();
                    //foreach (Discount dis in session.CoveragePageDiscounts)
                    //    sb.Append("session.Discounts[x].Name=" + dis.Name + ",.Purchased=" + dis.Purchased.ToString() + ";");
                    //LoggingServices.Instance.logError("CoveragePageDiscounts: " + sb.ToString(), "SessionServices.UpdateCoveragesAndDiscounts", UDILibrary.Log.LogSeverity.Error);

                    if (response.Element("Discounts").Element("DiscountCoverages") != null)
                    {
                        //sb = new StringBuilder();
                        foreach (XElement disElement in response.Element("Discounts").Element("DiscountCoverages").Elements())
                        {
                            string name = disElement.GetValue("Name").FormatDiscountDescription((WebSessionDRC)session);
                            if (name.Contains("Network"))
                            {
                                name = name.Replace("iMingle", "");
                            }
                            //sb.Append("name=" + name + ",.Purchased=" + disElement.GetValue("Purchased") + ";");

                            Discount dis = session.CoveragePageDiscounts.Find(d => d.Name == name);

                            if (dis != null)
                            {
                                //LoggingServices.Instance.logError("disElement.GetValue(Name)=" + disElement.GetValue("Name") + ",dis.ID=" + dis.ID + ",dis.Name=" + dis.Name + ",disElement.Purchased=" + disElement.Element("Purchased").Value + ",dis.Purchased=" + dis.Purchased, "SessionServices.UpdateCoveragesAndDiscounts", UDILibrary.Log.LogSeverity.Error);

                                disElement.Element("Purchased").Value = dis.Purchased ? "true" : "false";
                                if (name.Contains("Network"))
                                {
                                    if (dis.Purchased)
                                    {
                                        session.AddInfo.iminglediscount = "1";
                                        ((WebSessionDRC)session).Quote.getPolicyInfo().setMingleMateDis(1);
                                        ((WebSessionDRC)session).Quote.getPolicyInfo().setMinglePledgeTest(1);
                                    }
                                    else
                                    {
                                        session.AddInfo.iminglediscount = "0";
                                        ((WebSessionDRC)session).Quote.getPolicyInfo().setMingleMateDis(0);
                                        ((WebSessionDRC)session).Quote.getPolicyInfo().setMinglePledgeTest(0);
                                        foreach (Discount di in session.Discounts)
                                        {
                                            if (di.ID == "NetworkDiscount")
                                            {
                                                di.Purchased = false;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    //LoggingServices.Instance.logError("responseDsicountElements: " + sb.ToString(), "SessionServices.UpdateCoveragesAndDiscounts", UDILibrary.Log.LogSeverity.Error);

                    if (response.Element("PayPlans") != null)
                    {
                        string[] valuesArray = session.SelectedPayPlan.Value.Split('~');
                        if (valuesArray.Length > 7)
                        {
                            response.Element("PayPlans").Element("SelectedPayPlan").Value = valuesArray[7];
                        }
                    }
                    if (response.Element("InstantRenters") != null)
                    {
                        if (response.Element("InstantRenters").Element("HOIRenterInfo") != null)
                        {
                            if (response.Element("InstantRenters").Element("HOIRenterInfo").Element("HOIRenterProvide").Value == "YES")
                            {
                                if (response.Element("InstantRenters").Element("HOIRenterInfo").Element("HOIRenterProperty") != null)
                                {
                                    response.Element("InstantRenters").Element("HOIRenterInfo").Element("HOIRenterProperty").Value = session.AddInfo.HOIRenterInfo.HOIRenterProperty.ToString();
                                }
                                if (response.Element("InstantRenters").Element("HOIRenterInfo").Element("HOIRenterLiability") != null)
                                {
                                    response.Element("InstantRenters").Element("HOIRenterInfo").Element("HOIRenterLiability").Value = session.AddInfo.HOIRenterInfo.HOIRenterLiability.ToString();
                                }
                                if (response.Element("InstantRenters").Element("HOIRenterInfo").Element("HOIRenterDeductible") != null)
                                {
                                    response.Element("InstantRenters").Element("HOIRenterInfo").Element("HOIRenterDeductible").Value = session.AddInfo.HOIRenterInfo.HOIRenterDeductible.ToString();
                                }
                                if (response.Element("InstantRenters").Element("HOIRenterInfo").Element("HOIRenterInculded") != null)
                                {
                                    response.Element("InstantRenters").Element("HOIRenterInfo").Element("HOIRenterInculded").Value = session.AddInfo.HOIRenterInfo.HOIRenterInculded.ToString();
                                }
                                if (response.Element("InstantRenters").Element("HOIRenterInfo").Element("HOIRenterPremium") != null)
                                {
                                    response.Element("InstantRenters").Element("HOIRenterInfo").Element("HOIRenterPremium").Value = session.AddInfo.HOIRenterInfo.HOIRenterPremium.ToString();
                                }
                            }
                        }
                    }
                    return(response);
                }
                catch (Exception ex)
                {
                    LoggingServices.Instance.logError(ex.Message + ";guid=" + session.Guid, "UpdateCoveragesAndDiscounts", UDILibrary.Log.LogSeverity.Error);
                    LoggingServices.Instance.logError(ex.StackTrace, "UpdateCoveragesAndDiscounts", UDILibrary.Log.LogSeverity.Error);
                    session.AddErrorMessage("UpdateCoveragesAndDiscounts", session.AddInfo.CurrentPage, "KdQuoteLibrary", ex.Message);
                    return(null);
                }
            }
        }