コード例 #1
0
        //rules taken from Flex UDQuoteLibrary DiscountServices.as
        public static string FormatDiscountDescription(this string input, WebSessionDRC websession)
        {
            string result;

            result = input.Replace("{iMingleDescription}", websession.Quote.getPolicyInfo().getMarketBrand().getiMingleDescription(websession.AddInfo.Referral));
            result = result.Replace("{CompanyName}", websession.Quote.getPolicyInfo().getMarketBrand().GetCompanyName());
            result = result.Replace("{Group}", GetGroupName(websession.Quote.getPolicyInfo().getMarketBrand()));
            result = result.Replace("<sup>™</sup>", "™");
            result = result.Replace("<sup>®</sup>", "™");
            result = result.Replace("<sup>&trade;</sup>", "™");
            result = result.Replace("<sup>&reg;</sup>", "™");
            result = result.Replace("&lt;span style='font-weight:bold;'&gt;", "");
            result = result.Replace("<span style='font-weight:bold;'>", "");
            result = result.Replace("&lt;/span&gt;", "");
            result = result.Replace("</span>", "");
            result = result.Replace("&amp;nbsp;", " ");
            result = result.Replace("&nbsp;", " ");
            result = result.Replace("[Kemper Direct/Teachers/Partnership Direct]", GetGroupName(websession.Quote.getPolicyInfo().getMarketBrand()));
            if (result == "iMingle Network<sup>&trade;</sup> Discount" || result == "iMingle Network<sup>&reg;</sup> Discount" || result == "iMingle Network™")
            {
                int marketBrand = websession.Quote.getPolicyInfo().getMarketBrand();
                if (marketBrand == 1 || marketBrand == 0)
                {
                    result = "Network Discount";
                }
                else if (marketBrand == 3)
                {
                    result = "Teachers' Network™ Discount";
                }
            }
            return(result);
        }
コード例 #2
0
        public static bool DiscountApply(this string discountID, WebSessionDRC websession)
        {
            string   state      = websession.AddInfo.RiskState;
            DateTime systemDate = DateTime.Now;

            DateTime.TryParse(websession.AddInfo.SystemDate, out systemDate);

            switch (discountID)
            {
            case "MulticarDiscount":
                if (websession.Quote.getVehicles().count() > 1)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }

            case "AirBagDiscount":
                return(false);

            case "PassiveRestraintDiscount":
                if (state == "NV")
                {
                    for (int i = 0; i < websession.Quote.getVehicles().count(); i++)
                    {
                        if (websession.Quote.getVehicles().item(i).getAirBagTest() > 0)
                        {
                            return(true);
                        }
                    }
                }
                if (state == "PA")
                {
                    for (int j = 0; j < websession.Quote.getVehicles().count(); j++)
                    {
                        if (websession.Quote.getVehicles().item(j).getAirBagTest() > 0)
                        {
                            return(true);
                        }
                        if (websession.Quote.getVehicles().item(j).getPassiveRestraint() > 0)
                        {
                            return(true);
                        }
                    }
                }
                return(false);

            case "ESsignatureDiscount":
                return(false);

            case "WebDiscount":
                return(false);

            case "MingleMateDiscount":
                if ((websession.AddInfo.Referral != null) ||
                    (websession.Quote.getPolicyInfo().getMingleMateDis() == 1))
                {
                    return(true);
                }
                break;

            case "MultPolicyDiscount":
                //if (((websession.AddInfo.ClickThruPartnerInfo.RenterAndAuto != null) &&
                //     (websession.AddInfo.ClickThruPartnerInfo.RenterAndAuto == "YES"))
                //      ||
                //    ((websession.AddInfo.HOPolicy.Policy != null) &&
                //     (websession.AddInfo.HOPolicy.Policy != "")))
                //    return true;
                //else
                return(false);

            case "PaperlessDiscount":
                if (websession.Quote.getPolicyInfo().getPaperlessDis() == 1)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }

            case "ADisabledvcDiscount":
                if ("IL,PA,MN,IA,NJ".Contains(state))
                {
                    for (int j = 0; j < websession.Quote.getVehicles().count(); j++)
                    {
                        if (websession.Quote.getVehicles().item(j).getDisablingDevice() > 0)
                        {
                            return(true);
                        }
                        else
                        if (state == "NJ" && (websession.Quote.getVehicles().item(j).getWindowEtchingTest() > 0))
                        {
                            return(true);
                        }
                    }
                }
                return(false);

            case "WelcomeBackDiscount":
                if (websession.Quote.getPolicyInfo().getWelcomeBackDis() > 0)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }

            case "ComeBackAndSaveDiscount":
                if (websession.Quote.getPolicyInfo().getComeBackDis() > 0)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }

            case "MarriedDiscount":
                if (state != "MI")
                {
                    if (websession.Quote.getDrivers().count() > 0)
                    {
                        if ((websession.Quote.getDrivers().item(0).getDrivMarriedSingle() == 1) ||
                            (websession.Quote.getDrivers().item(0).getDrivMarriedSingle() == 10))
                        {
                            websession.Quote.getPolicyInfo().setMarriedDis(1);
                            return(true);
                        }
                        //ysang 6715 Widowed? add IA
                        //dmetz 11-04-2010 #6715 - Widowed? add Vibe 2B states
                        //dmetz 11-22-2010 #6845 - Vibe 2B - OH, AZ, TX
                        //PK SSR 7513 -- IN & MO -- Added MO
                        //jrenz SSR 7053, SSR 7548 3/23/2011 NV
                        //dmetz 07-12-2011 SSR6871 - CT, KS, TN
                        //jrenz 11/18/2011 SSR06872 - MD
                        //dmetz 04-19-2012 SSR6873 - ID,LA,UT
                        if ("IN,MN,OR,IL,CO,IA,SC,NJ,WI,VA,MO,NV,OH,AZ,TX,CT,KS,TN,MD,ID,LA,UT".Contains(state))
                        {
                            if (websession.Quote.getDrivers().item(0).getDrivMarriedSingle() == 6)
                            {
                                websession.Quote.getPolicyInfo().setMarriedDis(1);
                                return(true);
                            }
                        }
                    }
                }
                websession.Quote.getPolicyInfo().setMarriedDis(0);
                return(false);

            case "MatureDriverDiscount":

                if (state == "MI")
                {
                    for (int i = 0; i < websession.Quote.getDrivers().count(); i++)
                    {
                        if (websession.Quote.getDrivers().item(i).getBirthDateOfDriv().AddYears(65) < systemDate)
                        {
                            return(true);
                        }
                    }
                }
                if ("IN,MN,NV,IL,CO,VA,NJ,MD".Contains(state))
                {
                    for (int i = 0; i < websession.Quote.getDrivers().count(); i++)
                    {
                        if ((websession.Quote.getDrivers().item(i).getBirthDateOfDriv().AddYears(65) < systemDate) &&
                            (websession.Quote.getDrivers().item(i).getDrivTrainingDis() > 0))     //AddInfo.Drivers.Driver[i].AiDrivCourse
                        {
                            return(true);
                        }
                    }
                }
                if ("TN,ID".Contains(state))
                {
                    for (int i = 0; i < websession.Quote.getDrivers().count(); i++)
                    {
                        if ((websession.Quote.getDrivers().item(i).getBirthDateOfDriv().AddYears(55) < systemDate) &&
                            (websession.Quote.getDrivers().item(i).getDrivTrainingDis() > 0) &&     //AddInfo.Drivers.Driver[i].AiDrivCourse
                            (!chargeableAccidentsOrViolations(websession.Quote, i)))
                        {
                            return(true);
                        }
                    }
                }
                if (state == "OR" || state == "SC")
                {
                    for (int i = 0; i < websession.Quote.getDrivers().count(); i++)
                    {
                        if ((websession.Quote.getDrivers().item(i).getBirthDateOfDriv().AddYears(25) < systemDate) &&
                            (!chargeableAccidentsOrViolations(websession.Quote, i)))
                        {
                            return(true);
                        }
                    }
                }
                if (state == "OH" || state == "CT")
                {
                    for (int i = 0; i < websession.Quote.getDrivers().count(); i++)
                    {
                        if (websession.Quote.getDrivers().item(i).getBirthDateOfDriv().AddYears(60) < systemDate)
                        {
                            return(true);
                        }
                    }
                }

                return(false);

            case "RetroLoyaltyDiscount":
                if ((websession.Quote.getPolicyInfo().getRetroLoyaltyLevel() == 2) ||
                    (websession.Quote.getPolicyInfo().getRetroLoyaltyLevel() == 3) ||
                    (websession.Quote.getPolicyInfo().getRetroLoyaltyLevel() == 4))
                {
                    return(true);
                }
                else
                {
                    return(false);
                }

            case "SafeSoundDiscount":
                websession.Quote.getPolicyInfo().setSafeSoundDis(0);
                if ("MI,ID,LA".Contains(state))
                {
                    if (websession.Quote.getDrivers().count() > 1)
                    {
                        if (websession.Quote.getPolicyInfo().getNoOfDaysLapsed() != 2)     //no lapse=2
                        {
                            for (int i = 0; i < websession.Quote.getDrivers().count(); i++)
                            {
                                if (websession.Quote.getDrivers().item(i).getBirthDateOfDriv().AddYears(19) < systemDate)     //a driver over 19
                                {
                                    for (int j = 0; j < websession.Quote.getAccidents().count(); j++)
                                    {
                                        if (websession.Quote.getAccidents().item(i).getSdipAccComp() > 0)
                                        {
                                            return(false);
                                        }
                                    }
                                    websession.Quote.getPolicyInfo().setSafeSoundDis(1);
                                    return(true);
                                }
                            }
                        }
                    }
                }
                else if (state == "UT")
                {
                    if (websession.Quote.getDrivers().count() > 1)
                    {
                        if (websession.Quote.getPolicyInfo().getNoOfDaysLapsed() != 8)     //innocent no prior=8
                        {
                            for (int i = 0; i < websession.Quote.getDrivers().count(); i++)
                            {
                                if (websession.Quote.getDrivers().item(i).getBirthDateOfDriv().AddYears(19) < systemDate)     //a driver over 19
                                {
                                    for (int j = 0; j < websession.Quote.getAccidents().count(); j++)
                                    {
                                        if (websession.Quote.getAccidents().item(i).getSdipAccComp() > 0)
                                        {
                                            return(false);
                                        }
                                    }
                                    websession.Quote.getPolicyInfo().setSafeSoundDis(1);
                                    return(true);
                                }
                            }
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < websession.Quote.getDrivers().count(); i++)
                    {
                        if (websession.Quote.getDrivers().item(i).getBirthDateOfDriv().AddYears(19) < systemDate)     //a driver over 19
                        {
                            for (int j = 0; j < websession.Quote.getAccidents().count(); j++)
                            {
                                if (websession.Quote.getAccidents().item(i).getSdipAccComp() > 0)
                                {
                                    return(false);
                                }
                            }
                            if (websession.Quote.getPolicyInfo().getNoOfDaysLapsed() == 7)
                            {
                                websession.Quote.getPolicyInfo().setSafeSoundDis(1);
                                return(true);
                            }
                            else
                            {
                                return(false);
                            }
                        }
                    }
                }
                return(false);

            case "PreferPayerDiscount":
                if (websession.Quote.getCoverages().count() > 0)
                {
                    if (websession.Quote.getCoverages().item(0).getSixMonthPremiums().getSmTPrefPayPrem() > 0)
                    {
                        return(true);
                    }
                }
                return(false);

            case "GroupDiscount":
                if (websession.Quote.getDrivers().count() > 0)
                {
                    if (websession.Quote.getCoverages().count() > 0)
                    {
                        if (websession.Quote.getCoverages().item(0).getSixMonthPremiums().getSmTGroupdiscPrem() > 0)
                        {
                            return(true);
                        }
                    }
                }
                return(false);

            case "DdcDiscount":
                if (state == "KS")
                {
                    for (int i = 0; i < websession.Quote.getDrivers().count(); i++)
                    {
                        if (websession.Quote.getDrivers().item(i).getDrivTrainingDis() > 0)     //AddInfo.Drivers.Driver[i].AiDrivCourse
                        {
                            return(true);
                        }
                    }
                }
                if (state == "SC")
                {
                    for (int i = 0; i < websession.Quote.getDrivers().count(); i++)
                    {
                        if (websession.Quote.getDrivers().item(i).getDrivTrainingDis() > 0)     //AddInfo.Drivers.Driver[i].AiDrivCourse
                        {
                            if (websession.Quote.getDrivers().item(i).getBirthDateOfDriv().AddYears(25) < systemDate)
                            {
                                if (chargeableAccidentsOrViolations(websession.Quote, i))
                                {
                                    return(true);
                                }
                            }
                        }
                    }
                }
                if (state == "UT")
                {
                    for (int i = 0; i < websession.Quote.getDrivers().count(); i++)
                    {
                        if (websession.Quote.getDrivers().item(i).getDrivTrainingDis() > 0)     //AddInfo.Drivers.Driver[i].AiDrivCourse
                        {
                            if (websession.Quote.getDrivers().item(i).getBirthDateOfDriv().AddYears(25) < systemDate)
                            {
                                return(true);
                            }
                        }
                    }
                }
                return(false);

            case "VehicleRecoveryDiscount":
                for (int i = 0; i < websession.Quote.getVehicles().count(); i++)
                {
                    if (websession.Quote.getVehicles().item(i).getVehicleRecoveryTest() > 0)
                    {
                        return(true);
                    }
                }
                return(false);

            case "ContinuousDiscount":
                if ("IA,SC,NJ,WI,VA".Contains(state))
                {
                    if (websession.Quote.getPolicyInfo().getNoOfDaysLapsed() > 1)
                    {
                        return(true);
                    }
                }
                return(false);

            case "GoodDriverDiscount":
                for (int i = 0; i < websession.Quote.getDrivers().count(); i++)
                {
                    if (websession.Quote.getDrivers().item(i).getGoodDriverDis() > 0)
                    {
                        return(true);
                    }
                }
                return(false);

            case "HomeownershipDiscount":
                if (websession.Quote.getCustomer().getRentOwnTest() == 1)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }

            case "GoodStudentDiscount":
                if (websession.Quote.getCoverages().count() > 0)
                {
                    if (websession.Quote.getCoverages().item(0).getSixMonthPremiums().getSmTGoodStudentPrem() > 0)
                    {
                        return(true);
                    }
                }
                return(false);

            default:
                return(false);
            }
            return(false);
        }
コード例 #3
0
 //TODO convert this for loop to Linq query
 public static void GetDiscounts(WebSessionDRC session, XElement response)
 {
     session.Discounts = new List <Discount>();
     if ((response.Element("Discounts") != null) &&
         (response.Element("Discounts").Element("DiscountPremiums") != null))
     {
         foreach (XElement e in response.Element("Discounts").Element("DiscountPremiums").Elements())
         {
             Discount newDisc = new Discount()
             {
                 Name = e.Element("Name").Value.FormatDiscountDescription(session), Amount = e.Element("Amount").Value
             };
             if (newDisc.Name.Contains("Preferred"))
             {
                 newDisc.ID = "PreferredPayerDiscount";
             }
             if (newDisc.Name.Contains("Multi-Car"))
             {
                 newDisc.ID = "MultiCarDiscount";
             }
             if (newDisc.Name.Contains("Homeownership"))
             {
                 newDisc.ID = "HomeownershipDiscount";
             }
             if (newDisc.Name.Contains("Network"))
             {
                 newDisc.ID   = "NetworkDiscount";
                 newDisc.Name = newDisc.Name.Replace("iMingle", "");
             }
             if (newDisc.Name.Contains("Anti-Theft"))
             {
                 newDisc.ID = "AntiTheftDiscount";
             }
             if (newDisc.Name.Contains("Free-A-Tree"))
             {
                 newDisc.ID = "FreeATree";
             }
             if (newDisc.Name.Contains("Focused Driver"))
             {
                 newDisc.ID = "FocusedDriver";
             }
             if (newDisc.Name.Contains("Multi-Policy"))
             {
                 newDisc.ID = "MultiPolicy";
             }
             if (newDisc.Name.Contains("Happily Married"))
             {
                 newDisc.ID = "HappilyMarried";
             }
             if (newDisc.Name.Contains("Safe"))
             {
                 newDisc.ID = "SafeAndSound";
             }
             if (newDisc.Name.Contains("Passive Restraint"))
             {
                 newDisc.ID = "PassiveRestraint";
             }
             if (newDisc.Name.Contains("Retro Loyalty"))
             {
                 newDisc.ID = "RetroLoyaltyDiscount";
             }
             if (response.Element("Discounts").Element("DiscountCoverages") != null)
             {
                 foreach (XElement e2 in response.Element("Discounts").Element("DiscountCoverages").Elements())
                 {
                     if ((e2.Element("Name") != null) &&
                         (e2.Element("Name").Value.FormatDiscountDescription(session) == newDisc.Name))
                     {
                         if (e2.Element("Description") != null)
                         {
                             newDisc.Description = e2.Element("Description").Value;
                         }
                         if (e2.Element("ExpandedDesc") != null)
                         {
                             newDisc.Description += e2.Element("ExpandedDesc").Value;
                         }
                         newDisc.Description.FormatDiscountDescription(session);
                         break;
                     }
                 }
             }
             session.Discounts.Add(newDisc);
         }
     }
 }
コード例 #4
0
 public static List <Discount> DeserializeCoverageDiscounts(XElement coveragesXml, WebSessionDRC session)
 {
     return((from d in coveragesXml.Element("Discounts").Element("DiscountCoverages").Elements()
             where !(d.Element("Name").Value.Contains("Multi-Policy") &&
                     coveragesXml.Element("GeneralInfo").Element("Customer").Element("IsHOOfferedInDRC").Value.ToLower() == "false")
             select new Discount()
     {
         Name = Utilities.FormatDiscountDescription(d.Element("Name").Value, session.Quote.getPolicyInfo().getMarketBrand(), session.AddInfo.Referral),
         ShortDescription = Utilities.FormatDiscountDescription(d.Element("Description").Value, session.Quote.getPolicyInfo().getMarketBrand(), session.AddInfo.Referral),
         ExpandedDesc = Utilities.FormatDiscountDescription(d.Element("ExpandedDesc").Value, session.Quote.getPolicyInfo().getMarketBrand(), session.AddInfo.Referral),
         Purchased = d.Element("Purchased").Value.ToLower() == "true" || d.Element("Purchased").Value == "1",
         CanBeDeleted = d.Element("CanBeDeleted").Value.ToLower() == "true",
         ID = Utilities.GetDiscountID(d.Element("Name").Value),
         Amount = (from p in coveragesXml.Element("Discounts").Element("DiscountPremiums").Elements()
                   where p.Element("Name").Value == d.Element("Name").Value
                   select(p.Element("Amount").Value == "" ? "" : string.Format("{0:c}", decimal.Parse(p.Element("Amount").Value)))).First(),
         AmountNumeric = decimal.Parse((from p in coveragesXml.Element("Discounts").Element("DiscountPremiums").Elements()
                                        where p.Element("Name").Value == d.Element("Name").Value
                                        select(p.Element("Amount").Value == "" ? "0" : p.Element("Amount").Value)).First())
     }).ToList());
 }