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",
SERVICE_PACKAGE_DISCOUNT: "OfferServicePackageDiscount",
RECAL_PRICE_REMOVE: "RecalPriceRemove",
INSURANCE_TAB_TO_DISPLAY_THRESHOLD_INTERNAL: "NextGen_InternalInsuranceTabDisplayThreshold",
INSURANCE_TAB_TO_DISPLAY_THRESHOLD_EXTERNAL: "NextGen_ExternalInsuranceTabDisplayThreshold",
};
const experimentTriggers = {

View file

@ -135,6 +135,8 @@ import { packageNames } from "@/constants/package-names";
import { navigateToHeritageFunnel } from "@/helpers/heritage-integration/navigation-helper";
defineRule("option-required", required(errorMessages.OPTION_REQUIRED));
const INSURANCE_TAB_TO_DISPLAY_THRESHOLD_DEFAULT = 300;
export default {
name: "quote",
async beforeRouteEnter(to, from, next) {
@ -262,7 +264,6 @@ export default {
vm.addableVaps = addableVaps;
vm.lineItems = lineItems;
vm.availableLineItems = pricingResults;
vm.isInsuranceSelected = vm.getDefaultIsInsuranceSelectedValue(vm.availableLineItems);
vm.holdParentAccountNumber = holdParentAccountNumber;
vm.holdBillToAccountNumber = holdBillToAccountNumber;
@ -291,8 +292,51 @@ export default {
navigateToHeritageFunnel({ shouldSaveSession: true, pageNameToLog: "quote" });
}
if (store.getters.externalParameterState?.isExternalParameter) {
if (store.getters.externalParameterQuote.isInsurance == true) {
const getIsInsuranceSelectedValue = (availableLineItems, insuranceThreshold) => {
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.servicePackage = store.getters.externalParameterQuote.servicePackage;
await nextTick();
@ -303,10 +347,22 @@ export default {
baseMixin.methods.ResetExternalParamsAndHideModal();
}
} 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();
}
} else {
baseMixin.methods.ResetExternalParamsAndHideModal();
}
});
},
@ -392,30 +448,6 @@ export default {
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) {
this.lineItems.vaps = vapsItemsSelected;
},