CSR-2166: refactoring to include logic to retrieve an insurance threshold from external parameters

This commit is contained in:
Adam Caouette 2024-09-20 15:23:28 -04:00
parent c9c651b7e5
commit 9bf5255f2b
2 changed files with 63 additions and 29 deletions

View file

@ -13,6 +13,8 @@ const experimentSettings = {
IS_EMAIL_OPTIONAL: "isEmailOptional", IS_EMAIL_OPTIONAL: "isEmailOptional",
SERVICE_PACKAGE_DISCOUNT: "OfferServicePackageDiscount", SERVICE_PACKAGE_DISCOUNT: "OfferServicePackageDiscount",
RECAL_PRICE_REMOVE: "RecalPriceRemove", RECAL_PRICE_REMOVE: "RecalPriceRemove",
INSURANCE_TAB_TO_DISPLAY_THRESHOLD_INTERNAL: "NextGen_InternalInsuranceTabDisplayThreshold",
INSURANCE_TAB_TO_DISPLAY_THRESHOLD_EXTERNAL: "NextGen_ExternalInsuranceTabDisplayThreshold",
}; };
const experimentTriggers = { const experimentTriggers = {

View file

@ -135,6 +135,8 @@ import { packageNames } from "@/constants/package-names";
import { navigateToHeritageFunnel } from "@/helpers/heritage-integration/navigation-helper"; import { navigateToHeritageFunnel } from "@/helpers/heritage-integration/navigation-helper";
defineRule("option-required", required(errorMessages.OPTION_REQUIRED)); defineRule("option-required", required(errorMessages.OPTION_REQUIRED));
const INSURANCE_TAB_TO_DISPLAY_THRESHOLD_DEFAULT = 300;
export default { export default {
name: "quote", name: "quote",
async beforeRouteEnter(to, from, next) { async beforeRouteEnter(to, from, next) {
@ -262,7 +264,6 @@ export default {
vm.addableVaps = addableVaps; vm.addableVaps = addableVaps;
vm.lineItems = lineItems; vm.lineItems = lineItems;
vm.availableLineItems = pricingResults; vm.availableLineItems = pricingResults;
vm.isInsuranceSelected = vm.getDefaultIsInsuranceSelectedValue(vm.availableLineItems);
vm.holdParentAccountNumber = holdParentAccountNumber; vm.holdParentAccountNumber = holdParentAccountNumber;
vm.holdBillToAccountNumber = holdBillToAccountNumber; vm.holdBillToAccountNumber = holdBillToAccountNumber;
@ -291,8 +292,51 @@ export default {
navigateToHeritageFunnel({ shouldSaveSession: true, pageNameToLog: "quote" }); navigateToHeritageFunnel({ shouldSaveSession: true, pageNameToLog: "quote" });
} }
if (store.getters.externalParameterState?.isExternalParameter) { const getIsInsuranceSelectedValue = (availableLineItems, insuranceThreshold) => {
if (store.getters.externalParameterQuote.isInsurance == true) { const serviceLocationState = store.getters.order.serviceLocation.state;
// Override if coming back from QuoteDetails. Remove override after Quote release
const isInsuranceOverrideValue = to.query?.isInsurance;
const defaultIsInsuranceSelectedValue = store.getters.order.payment.isInsurance;
//Default to Insurance Tab if user Service zip is from certain States
if (
serviceLocationState != null &&
payWithInsuranceStates.find((item) => item === serviceLocationState)
)
return true;
else if (isInsuranceOverrideValue != null) {
return isInsuranceOverrideValue == "true";
} else if (defaultIsInsuranceSelectedValue != null) {
return defaultIsInsuranceSelectedValue;
} else {
// TEMPORARY CODE WHILE DEVELOPING
if (availableLineItems) {
let tierOnePackagePriceTemp = baseMixin.methods.getTierOnePackagePrice(
baseMixin.methods.filterOutFees(availableLineItems)
);
let whatToReturn = baseMixin.methods.getTierOnePackagePrice(
baseMixin.methods.filterOutFees(availableLineItems)
) > insuranceThreshold;
return whatToReturn; // TODO AJC: TIGHTEN THIS BACK UP AFTER TESTING
} else {
return null;
}
}
};
let thresholdToUse = INSURANCE_TAB_TO_DISPLAY_THRESHOLD_DEFAULT;
let internalThreshold = experimentMixin.methods.getSettingValue(
experimentSettings.INSURANCE_TAB_TO_DISPLAY_THRESHOLD_INTERNAL
);
if (!store.getters.externalParameterState?.isExternalParameter) { // there are no external parameters
if (internalThreshold) thresholdToUse = internalThreshold;
vm.isInsuranceSelected = getIsInsuranceSelectedValue(vm.availableLineItems, thresholdToUse);
baseMixin.methods.ResetExternalParamsAndHideModal();
} else { // there ARE external parameters
if (store.getters.externalParameterQuote.isInsurance == true) { // did user intentionally select insurance?
vm.isInsuranceSelected = true; vm.isInsuranceSelected = true;
vm.servicePackage = store.getters.externalParameterQuote.servicePackage; vm.servicePackage = store.getters.externalParameterQuote.servicePackage;
await nextTick(); await nextTick();
@ -303,10 +347,22 @@ export default {
baseMixin.methods.ResetExternalParamsAndHideModal(); baseMixin.methods.ResetExternalParamsAndHideModal();
} }
} else { } else {
// did user come from external source (LeadGen)?
let externalSource = store.getters.externalParameterSource ? store.getters.externalParameterSource : null;
// Business logic to determine what "external" source is
if (externalSource?.includes("LeadGen")) {
const externalThreshold = experimentMixin.methods.getSettingValue(
experimentSettings.INSURANCE_TAB_TO_DISPLAY_THRESHOLD_EXTERNAL
);
if (externalThreshold) thresholdToUse = externalThreshold;
} else {
if (internalThreshold) thresholdToUse = internalThreshold;
}
vm.isInsuranceSelected = getIsInsuranceSelectedValue(vm.availableLineItems, thresholdToUse);
baseMixin.methods.ResetExternalParamsAndHideModal(); baseMixin.methods.ResetExternalParamsAndHideModal();
} }
} else {
baseMixin.methods.ResetExternalParamsAndHideModal();
} }
}); });
}, },
@ -392,30 +448,6 @@ export default {
payment.insuranceCoverage?.isVerified === false) payment.insuranceCoverage?.isVerified === false)
); );
}, },
getDefaultIsInsuranceSelectedValue(availableLineItems) {
const serviceLocationState = store.getters.order.serviceLocation.state;
// Override if coming back from QuoteDetails. Remove override after Quote release
const isInsuranceOverrideValue = this.$route.query?.isInsurance;
const defaultIsInsuranceSelectedValue = this.$store.getters.order.payment.isInsurance;
//Default to Insurance Tab if user Service zip is from certain States
if (
serviceLocationState != null &&
payWithInsuranceStates.find((item) => item === serviceLocationState)
)
return true;
else if (isInsuranceOverrideValue != null) {
return isInsuranceOverrideValue == "true";
} else if (defaultIsInsuranceSelectedValue != null) {
return defaultIsInsuranceSelectedValue;
} else {
return availableLineItems
? baseMixin.methods.getTierOnePackagePrice(
baseMixin.methods.filterOutFees(availableLineItems)
) > 300
: null;
}
},
vapsItemsSelectedAction(vapsItemsSelected) { vapsItemsSelectedAction(vapsItemsSelected) {
this.lineItems.vaps = vapsItemsSelected; this.lineItems.vaps = vapsItemsSelected;
}, },