//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>&trade;</sup>", "™"); result = result.Replace("<sup>&reg;</sup>", "™"); result = result.Replace("<sup>™</sup>", "™"); result = result.Replace("<sup>®</sup>", "™"); result = result.Replace("<span style='font-weight:bold;'>", ""); result = result.Replace("<span style='font-weight:bold;'>", ""); result = result.Replace("</span>", ""); result = result.Replace("</span>", ""); result = result.Replace("&nbsp;", " "); result = result.Replace(" ", " "); result = result.Replace("[Kemper Direct/Teachers/Partnership Direct]", GetGroupName(websession.Quote.getPolicyInfo().getMarketBrand())); if (result == "iMingle Network<sup>™</sup> Discount" || result == "iMingle Network<sup>®</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); }
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); }
//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); } } }
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()); }