replacing LeadGenState with ExternalParameterState and add capability questions, molding questions and vehicle parts.
This commit is contained in:
hiteshkumar87 2024-08-21 16:28:00 +05:30
parent c197093632
commit 6ab9c34370
24 changed files with 335 additions and 334 deletions

View file

@ -96,9 +96,8 @@ const storeActions = {
CREATE_SUBMITTED_ORDER: "createSubmittedOrder", CREATE_SUBMITTED_ORDER: "createSubmittedOrder",
RESET_SUBMITTED_ORDER: "resetSubmittedOrder", RESET_SUBMITTED_ORDER: "resetSubmittedOrder",
RESET_LEADGEN_STATE: "resetLeadGenState", RESET_EXTERNAL_PARAMETER_STATE: "resetExternalParameterState",
CREATE_LEADGEN_STATE: "createLeadGenState", UPDATE_EXTERNAL_PARAMETER_MMS: "updateExternalParameterMMS",
UPDATE_LEADGEN_MMS: "updateLeadGenMMS",
}; };
export { storeActions }; export { storeActions };

View file

@ -60,7 +60,6 @@ const storeMutations = {
Customer_Portal_Login_Token: "updateCustomerPortalLoginToken", Customer_Portal_Login_Token: "updateCustomerPortalLoginToken",
LOCK_TOKEN: "updateLockToken", LOCK_TOKEN: "updateLockToken",
UPDATE_SETTLED_TENDER_AMOUNT: "updateSettledTenderAmount", UPDATE_SETTLED_TENDER_AMOUNT: "updateSettledTenderAmount",
UPDATE_IS_LEAD_GEN: "updateIsLeadGen",
// EVENT BUS MUTATIONS // EVENT BUS MUTATIONS
ADD_EVENT_TO_BUS: "addEventToBus", ADD_EVENT_TO_BUS: "addEventToBus",
@ -89,27 +88,28 @@ const storeMutations = {
UPDATE_EXPERIMENTS: "updateExperiments", UPDATE_EXPERIMENTS: "updateExperiments",
UPDATE_TRIGGERED_SITE_ENTRY: "updateTriggeredSiteEntry", UPDATE_TRIGGERED_SITE_ENTRY: "updateTriggeredSiteEntry",
// LEADGEN MUTATIONS // EXTERNAL_PARAMETER MUTATIONS
UPDATE_LEAD_GEN_YEAR: "updateLeadGenYear", UPDATE_IS_EXTERNAL_PARAMETER: "updateIsExternalParameter",
UPDATE_LEAD_GEN_MAKE: "updateLeadGenMake", UPDATE_EXTERNAL_PARAMETER_YEAR: "updateExternalParameterYear",
UPDATE_LEAD_GEN_MODEL: "updateLeadGenModel", UPDATE_EXTERNAL_PARAMETER_MAKE: "updateExternalParameterMake",
UPDATE_LEAD_GEN_STYLE: "updateLeadGenStyle", UPDATE_EXTERNAL_PARAMETER_MODEL: "updateExternalParameterModel",
UPDATE_LEAD_GEN_IS_REPAIR: "updateLeadGenIsRepair", UPDATE_EXTERNAL_PARAMETER_STYLE: "updateExternalParameterStyle",
UPDATE_LEAD_GEN_NUMBER_OF_CHIPS: "updateLeadGenNumberOfChips", UPDATE_EXTERNAL_PARAMETER_IS_REPAIR: "updateExternalParameterIsRepair",
UPDATE_LEAD_GEN_DAMAGE_TYPE: "updateLeadGenDamageType", UPDATE_EXTERNAL_PARAMETER_NUMBER_OF_CHIPS: "updateExternalParameterNumberOfChips",
UPDATE_LEAD_GEN_ZIP_CODE: "updateLeadGenZipCode", UPDATE_EXTERNAL_PARAMETER_DAMAGE_TYPE: "updateExternalParameterDamageType",
UPDATE_LEAD_GEN_EMAIL_ADDRESS: "updateLeadGenEmailAddress", UPDATE_EXTERNAL_PARAMETER_ZIP_CODE: "updateExternalParameterZipCode",
UPDATE_LEAD_GEN_IS_INSURANCE: "updateLeadGenIsInsurance", UPDATE_EXTERNAL_PARAMETER_EMAIL_ADDRESS: "updateExternalParameterEmailAddress",
UPDATE_LEAD_GEN_VIN_SELECTION: "updateLeadGenVinSelection", UPDATE_EXTERNAL_PARAMETER_IS_INSURANCE: "updateExternalParameterIsInsurance",
UPDATE_LEAD_GEN_SERVICE_PACKAGE: "updateLeadGenServicePackage", UPDATE_EXTERNAL_PARAMETER_VIN_SELECTION: "updateExternalParameterVinSelection",
UPDATE_EXTERNAL_PARAMETER_SERVICE_PACKAGE: "updateExternalParameterServicePackage",
//RESET LEADGEN MUTATIONS //RESET EXTERNAL_PARAMETER MUTATIONS
RESET_LEADGEN_VEHICLE_STATE: "resetLeadGenVehicleState", RESET_EXTERNAL_PARAMETER_VEHICLE_STATE: "resetExternalParameterVehicleState",
RESETL_EADGEN_DAMAGE_STATE: "resetLeadGenDamageState", RESET_EXTERNAL_PARAMETER_DAMAGE_STATE: "resetExternalParameterDamageState",
RESET_LEADGEN_ESTIMATE_STATE: "resetLeadGenEstimateState", RESET_EXTERNAL_PARAMETER_ESTIMATE_STATE: "resetExternalParameterEstimateState",
RESET_LEADGEN_SERVICEZIP_STATE: "resetLeadGenServiceZipState", RESET_EXTERNAL_PARAMETER_SERVICEZIP_STATE: "resetExternalParameterServiceZipState",
RESET_LEADGEN_QUOTE_STATE: "resetLeadGenQuoteState", RESET_EXTERNAL_PARAMETER_QUOTE_STATE: "resetExternalParameterQuoteState",
RESET_IS_LEADGEN: "resetIsLeadGen", RESET_IS_EXTERNAL_PARAMETER: "resetIsExternalParameter",
}; };
export { storeMutations }; export { storeMutations };

View file

@ -150,9 +150,8 @@ export default {
// Call the "next" function to complete the transition to this page. // Call the "next" function to complete the transition to this page.
next((vm) => { next((vm) => {
vm.setCmsContent(resultMap.cmsContent); vm.setCmsContent(resultMap.cmsContent);
if (store.getters.isLeadGen) { if (store.getters.isExternalParameter) {
baseMixin.methods.dispatchStoreAction(storeActions.RESET_LEADGEN_STATE); baseMixin.methods.ResetExternalParamsAndHideModal();
baseMixin.methods.hideFmgLoadingModal();
} }
}); });
}, },

View file

@ -29,6 +29,7 @@ import { Form, defineRule } from "vee-validate";
import { required } from "@/helpers/validation-rules"; import { required } from "@/helpers/validation-rules";
import { errorMessages } from "@/constants/error-messages"; import { errorMessages } from "@/constants/error-messages";
import vehicleQuestionsMixin from "@/mixins/vehicle-questions-mixin"; import vehicleQuestionsMixin from "@/mixins/vehicle-questions-mixin";
import baseMixin from "@/mixins/base-mixin.js";
// DEFINE VALIDATION RULES // DEFINE VALIDATION RULES
defineRule("questions-required", required(errorMessages.OPTION_REQUIRED)); defineRule("questions-required", required(errorMessages.OPTION_REQUIRED));
@ -53,6 +54,9 @@ export default {
// Call the "next" function to complete the transition to this page. // Call the "next" function to complete the transition to this page.
next((vm) => { next((vm) => {
vm.setCmsContent(resultMap.cmsContent); vm.setCmsContent(resultMap.cmsContent);
if (store.getters.isExternalParameter) {
baseMixin.methods.ResetExternalParamsAndHideModal();
}
}); });
}, },
data() { data() {

View file

@ -214,9 +214,9 @@ describe("estimate.vue", () => {
}); });
describe("estimate.vue", () => { describe("estimate.vue", () => {
test("should call forwardButtonAction if isLeadGen is true and form is valid", async () => { test("should call forwardButtonAction if isExternalParameter is true and form is valid", async () => {
store.commit(storeMutations.UPDATE_IS_LEAD_GEN, true); store.commit(storeMutations.UPDATE_IS_EXTERNAL_PARAMETER, true);
store.commit(storeMutations.UPDATE_LEAD_GEN_VIN_SELECTION, "decline"); store.commit(storeMutations.UPDATE_EXTERNAL_PARAMETER_VIN_SELECTION, "decline");
// Set up the component // Set up the component
const { wrapper } = setupMocks({}); const { wrapper } = setupMocks({});

View file

@ -146,26 +146,23 @@ export default {
} }
vm.setCmsContent(resultMap.cmsContent); vm.setCmsContent(resultMap.cmsContent);
if (store.getters.isLeadGen) { if (store.getters.isExternalParameter) {
if (store.getters.leadGenEstimate.vinSelection) { if (store.getters.externalParameterEstimate.vinSelection) {
vm.selectedVinLookupMethod = vinPagesMixin.methods.getVinlookupMethod( vm.selectedVinLookupMethod = vinPagesMixin.methods.getVinlookupMethod(
store.getters.leadGenEstimate.vinSelection store.getters.externalParameterEstimate.vinSelection
); );
await nextTick(); await nextTick();
const isValid = await baseMixin.methods.isFormValid(vm.$refs.theForm); const isValid = await baseMixin.methods.isFormValid(vm.$refs.theForm);
if (isValid) { if (isValid) {
vm.forwardButtonAction(); vm.forwardButtonAction();
} else { } else {
baseMixin.methods.dispatchStoreAction(storeActions.RESET_LEADGEN_STATE); baseMixin.methods.ResetExternalParamsAndHideModal();
baseMixin.methods.hideFmgLoadingModal();
} }
} else { } else {
baseMixin.methods.dispatchStoreAction(storeActions.RESET_LEADGEN_STATE); baseMixin.methods.ResetExternalParamsAndHideModal();
baseMixin.methods.hideFmgLoadingModal();
} }
} else { } else {
baseMixin.methods.dispatchStoreAction(storeActions.RESET_LEADGEN_STATE); baseMixin.methods.ResetExternalParamsAndHideModal();
baseMixin.methods.hideFmgLoadingModal();
} }
}); });
}, },

View file

@ -76,9 +76,8 @@ export default {
next((vm) => { next((vm) => {
vm.setCmsContent(resultMap.cmsContent); vm.setCmsContent(resultMap.cmsContent);
vm.originalList = resultMap.insuranceCompanyList; vm.originalList = resultMap.insuranceCompanyList;
if (store.getters.isLeadGen) { if (store.getters.isExternalParameter) {
baseMixin.methods.dispatchStoreAction(storeActions.RESET_LEADGEN_STATE); baseMixin.methods.ResetExternalParamsAndHideModal();
baseMixin.methods.hideFmgLoadingModal();
} }
}); });
}, },

View file

@ -148,9 +148,8 @@ export default {
// Call the "next" function to complete the transition to this page. // Call the "next" function to complete the transition to this page.
next((vm) => { next((vm) => {
vm.setCmsContent(resultMap.cmsContent); vm.setCmsContent(resultMap.cmsContent);
if (store.getters.isLeadGen) { if (store.getters.isExternalParameter) {
baseMixin.methods.dispatchStoreAction(storeActions.RESET_LEADGEN_STATE); baseMixin.methods.ResetExternalParamsAndHideModal();
baseMixin.methods.hideFmgLoadingModal();
} }
}); });
}, },

View file

@ -29,6 +29,7 @@ import { Form, defineRule } from "vee-validate";
import { required } from "@/helpers/validation-rules"; import { required } from "@/helpers/validation-rules";
import { errorMessages } from "@/constants/error-messages"; import { errorMessages } from "@/constants/error-messages";
import vehicleQuestionsMixin from "@/mixins/vehicle-questions-mixin"; import vehicleQuestionsMixin from "@/mixins/vehicle-questions-mixin";
import baseMixin from "@/mixins/base-mixin.js";
// DEFINE VALIDATION RULES // DEFINE VALIDATION RULES
defineRule("questions-required", required(errorMessages.OPTION_REQUIRED)); defineRule("questions-required", required(errorMessages.OPTION_REQUIRED));
@ -53,6 +54,9 @@ export default {
// Call the "next" function to complete the transition to this page. // Call the "next" function to complete the transition to this page.
next((vm) => { next((vm) => {
vm.setCmsContent(resultMap.cmsContent); vm.setCmsContent(resultMap.cmsContent);
if (store.getters.isExternalParameter) {
baseMixin.methods.ResetExternalParamsAndHideModal();
}
}); });
}, },
data() { data() {

View file

@ -30,7 +30,6 @@ import { required } from "@/helpers/validation-rules";
import { errorMessages } from "@/constants/error-messages"; import { errorMessages } from "@/constants/error-messages";
import vehicleQuestionsMixin from "@/mixins/vehicle-questions-mixin"; import vehicleQuestionsMixin from "@/mixins/vehicle-questions-mixin";
import baseMixin from "@/mixins/base-mixin.js"; import baseMixin from "@/mixins/base-mixin.js";
import { storeActions } from "@/constants/store-actions";
// DEFINE VALIDATION RULES // DEFINE VALIDATION RULES
defineRule("questions-required", required(errorMessages.OPTION_REQUIRED)); defineRule("questions-required", required(errorMessages.OPTION_REQUIRED));
@ -55,9 +54,8 @@ export default {
// Call the "next" function to complete the transition to this page. // Call the "next" function to complete the transition to this page.
next((vm) => { next((vm) => {
vm.setCmsContent(resultMap.cmsContent); vm.setCmsContent(resultMap.cmsContent);
if (store.getters.isLeadGen) { if (store.getters.isExternalParameter) {
baseMixin.methods.dispatchStoreAction(storeActions.RESET_LEADGEN_STATE); baseMixin.methods.ResetExternalParamsAndHideModal();
baseMixin.methods.hideFmgLoadingModal();
} }
}); });
}, },

View file

@ -647,8 +647,8 @@ describe("quote.vue", () => {
}); });
}); });
describe("quote.vue", () => { describe("quote.vue", () => {
test("should call forwardButtonAction if isLeadGen and Insurance is true and form is valid", async () => { test("should call forwardButtonAction if isExternalParameter and Insurance is true and form is valid", async () => {
// Set up the store with isLeadGen as true // Set up the store with isExternalParameter as true
store.getters = { store.getters = {
lineItems: { lineItems: {
@ -671,8 +671,8 @@ describe("quote.vue", () => {
inactivePromos: [], inactivePromos: [],
}, },
}, },
isLeadGen: true, isExternalParameter: true,
leadGenQuote: { externalParameterQuote: {
isInsurance: true, isInsurance: true,
servicePackage: "glassonly", servicePackage: "glassonly",
}, },
@ -717,7 +717,7 @@ function setupMocks({ customMountOptions }) {
...customMountOptions, ...customMountOptions,
}); });
baseMixin.methods.hideFmgLoadingModal = jest.fn(); baseMixin.methods.ResetExternalParamsAndHideModal = jest.fn();
baseMixin.methods.isFormValid = jest.fn().mockReturnValue(true); baseMixin.methods.isFormValid = jest.fn().mockReturnValue(true);
mountOptions.global.mocks["$store"] = store; mountOptions.global.mocks["$store"] = store;
mountOptions["attachTo"] = document.body; mountOptions["attachTo"] = document.body;

View file

@ -272,25 +272,22 @@ export default {
validateAlerts[0].shouldAutoFade validateAlerts[0].shouldAutoFade
); );
} }
if (store.getters.isLeadGen) { if (store.getters.isExternalParameter) {
if (store.getters.leadGenQuote.isInsurance == true) { if (store.getters.externalParameterQuote.isInsurance == true) {
vm.isInsuranceSelected = true; vm.isInsuranceSelected = true;
vm.servicePackage = store.getters.leadGenQuote.servicePackage; vm.servicePackage = store.getters.externalParameterQuote.servicePackage;
await nextTick(); await nextTick();
const isValid = await baseMixin.methods.isFormValid(vm.$refs.theForm); const isValid = await baseMixin.methods.isFormValid(vm.$refs.theForm);
if (isValid) { if (isValid) {
vm.forwardButtonAction(); vm.forwardButtonAction();
} else { } else {
baseMixin.methods.dispatchStoreAction(storeActions.RESET_LEADGEN_STATE); baseMixin.methods.ResetExternalParamsAndHideModal();
baseMixin.methods.hideFmgLoadingModal();
} }
} else { } else {
baseMixin.methods.dispatchStoreAction(storeActions.RESET_LEADGEN_STATE); baseMixin.methods.ResetExternalParamsAndHideModal();
baseMixin.methods.hideFmgLoadingModal();
} }
} else { } else {
baseMixin.methods.dispatchStoreAction(storeActions.RESET_LEADGEN_STATE); baseMixin.methods.ResetExternalParamsAndHideModal();
baseMixin.methods.hideFmgLoadingModal();
} }
}); });
}, },

View file

@ -297,7 +297,8 @@ export default {
}, },
selectDefaultPackage() { selectDefaultPackage() {
if (this.servicePackage != null) { if (this.servicePackage != null) {
return (this.selectedPackageName = getPackageNameByType(this.servicePackage)); this.selectedPackageName = getPackageNameByType(this.servicePackage);
return;
} }
const promosWithAddableVaps = getPromosWithAddableVaps(this.activePromos); const promosWithAddableVaps = getPromosWithAddableVaps(this.activePromos);
const vapsThatMatchPromos = getLineItemsThatMatchPromos( const vapsThatMatchPromos = getLineItemsThatMatchPromos(

View file

@ -165,7 +165,7 @@ function resetMockStoreData() {
jobMaxMinutes: null, jobMaxMinutes: null,
jobMinMinutes: null, jobMinMinutes: null,
}, },
leadGenServiceZip: { externalParameterServiceZip: {
zipCode: null, zipCode: null,
emailAddress: null, emailAddress: null,
}, },
@ -179,7 +179,7 @@ function applyMockStoreDataToGetters() {
damage: mockStoreData.damage, damage: mockStoreData.damage,
payment: mockStoreData.payment, payment: mockStoreData.payment,
policy: mockStoreData.policy, policy: mockStoreData.policy,
leadGenServiceZip: mockStoreData.leadGenServiceZip, externalParameterServiceZip: mockStoreData.externalParameterServiceZip,
}; };
store.state.order = mockStoreData; store.state.order = mockStoreData;
store.state.applicationUser.experiments = mockExperimentSettings; store.state.applicationUser.experiments = mockExperimentSettings;
@ -409,9 +409,9 @@ describe("service-zip.vue", () => {
}); });
describe("service-zip.vue", () => { describe("service-zip.vue", () => {
test("should call forwardButtonAction if isLeadGen is true and form is valid", async () => { test("should call forwardButtonAction if isExternalParameter is true and form is valid", async () => {
// Set up the store with isLeadGen as true // Set up the store with isExternalParameter as true
store.getters.isLeadGen = true; store.getters.isExternalParameter = true;
// Set up the component // Set up the component
const wrapper = setupMocks({}); const wrapper = setupMocks({});
@ -433,9 +433,9 @@ describe("service-zip.vue", () => {
expect(nextFunction).toHaveBeenCalled(); expect(nextFunction).toHaveBeenCalled();
expect(wrapper.vm.forwardButtonAction).toHaveBeenCalled(); expect(wrapper.vm.forwardButtonAction).toHaveBeenCalled();
}); });
test("should not call forwardButtonAction if isLeadGen is true and form is invalid", async () => { test("should not call forwardButtonAction if isExternalParameter is true and form is invalid", async () => {
// Set up the store with isLeadGen as true // Set up the store with isExternalParameter as true
store.getters.isLeadGen = true; store.getters.isExternalParameter = true;
// Set up the component // Set up the component
const wrapper = setupMocks({}); const wrapper = setupMocks({});
@ -465,7 +465,7 @@ function setupMocks({ customMountOptions, customZipQuery, customZipDataResponse
if (customZipQuery) { if (customZipQuery) {
route.query.zipcode = customZipQuery; route.query.zipcode = customZipQuery;
} }
baseMixin.methods.hideFmgLoadingModal = jest.fn(); baseMixin.methods.ResetExternalParamsAndHideModal = jest.fn();
const mountOptions = getMountOptions({ const mountOptions = getMountOptions({
...customMountOptions, ...customMountOptions,

View file

@ -133,13 +133,12 @@ export default {
next(async (vm) => { next(async (vm) => {
vm.setCmsContent(resultMap.cmsContent); vm.setCmsContent(resultMap.cmsContent);
if (store.getters.isLeadGen) { if (store.getters.isExternalParameter) {
const isValid = await baseMixin.methods.isFormValid(vm.$refs.theForm); const isValid = await baseMixin.methods.isFormValid(vm.$refs.theForm);
if (isValid) { if (isValid) {
vm.forwardButtonAction(); vm.forwardButtonAction();
} else { } else {
baseMixin.methods.dispatchStoreAction(storeActions.RESET_LEADGEN_STATE); baseMixin.methods.ResetExternalParamsAndHideModal();
baseMixin.methods.hideFmgLoadingModal();
} }
} }
}); });
@ -147,13 +146,13 @@ export default {
methods: { methods: {
getZipFromStore() { getZipFromStore() {
return ( return (
store.getters.leadGenServiceZip.zipCode ?? store.getters.externalParameterServiceZip.zipCode ??
store.getters.order.serviceLocation.zipCode store.getters.order.serviceLocation.zipCode
); );
}, },
getEmailFromStore() { getEmailFromStore() {
return ( return (
store.getters.leadGenServiceZip.emailAddress ?? store.getters.externalParameterServiceZip.emailAddress ??
store.getters.order.customer.emailAddress store.getters.order.customer.emailAddress
); );
}, },
@ -190,9 +189,8 @@ export default {
if (!zipCodeData.isValid) { if (!zipCodeData.isValid) {
this.displayInvalidZipAlert = true; this.displayInvalidZipAlert = true;
if (store.getters.isLeadGen) { if (store.getters.isExternalParameter) {
baseMixin.methods.dispatchStoreAction(storeActions.RESET_LEADGEN_STATE); baseMixin.methods.ResetExternalParamsAndHideModal();
baseMixin.methods.hideFmgLoadingModal();
} }
return this.$refs.navbar.removeLoader(); return this.$refs.navbar.removeLoader();
} }
@ -200,9 +198,8 @@ export default {
if (!zipCodeData.isServiceable) { if (!zipCodeData.isServiceable) {
this.displayNonServiceableZipAlert = true; this.displayNonServiceableZipAlert = true;
if (store.getters.isLeadGen) { if (store.getters.isExternalParameter) {
baseMixin.methods.dispatchStoreAction(storeActions.RESET_LEADGEN_STATE); baseMixin.methods.ResetExternalParamsAndHideModal();
baseMixin.methods.hideFmgLoadingModal();
} }
return this.$refs.navbar.removeLoader(); return this.$refs.navbar.removeLoader();
} }

View file

@ -66,8 +66,8 @@ jest.mock("@/store", () => ({
glassToReplace: [], glassToReplace: [],
}, },
}, },
isLeadGen: false, isExternalParameter: false,
leadGenDamage: { externalParameterDamage: {
damageType: null, damageType: null,
isRepair: null, isRepair: null,
numberOfChips: null, numberOfChips: null,
@ -153,7 +153,7 @@ describe("vehicle-damage.vue", () => {
getters: { getters: {
vehicle: {}, vehicle: {},
payment: { insuranceCoverage: { isVerified: false } }, payment: { insuranceCoverage: { isVerified: false } },
leadGenDamage: { externalParameterDamage: {
damageType: null, damageType: null,
isRepair: null, isRepair: null,
numberOfChips: null, numberOfChips: null,
@ -268,7 +268,7 @@ describe("vehicle-damage.vue", () => {
getters: { getters: {
vehicle: {}, vehicle: {},
payment: { insuranceCoverage: { isVerified: false } }, payment: { insuranceCoverage: { isVerified: false } },
leadGenDamage: { externalParameterDamage: {
damageType: null, damageType: null,
isRepair: null, isRepair: null,
numberOfChips: null, numberOfChips: null,
@ -556,7 +556,7 @@ describe("vehicle-damage.vue", () => {
eventBusItem: jest.fn(), eventBusItem: jest.fn(),
damage: { glassToReplace: [{ glassLocation: damageLocation }] }, damage: { glassToReplace: [{ glassLocation: damageLocation }] },
isRepair: true, isRepair: true,
leadGenDamage: { externalParameterDamage: {
damageType: null, damageType: null,
isRepair: null, isRepair: null,
numberOfChips: null, numberOfChips: null,
@ -638,7 +638,7 @@ describe("vehicle-damage.vue", () => {
isRepair: isRepair, isRepair: isRepair,
numberOfChips: 2, numberOfChips: 2,
}, },
leadGenDamage: { externalParameterDamage: {
damageType: null, damageType: null,
isRepair: null, isRepair: null,
numberOfChips: null, numberOfChips: null,
@ -679,7 +679,7 @@ describe("vehicle-damage.vue", () => {
glassToReplace: [{ glassLocation: damageLocation, glassName: damageName }], glassToReplace: [{ glassLocation: damageLocation, glassName: damageName }],
}, },
isRepair: true, isRepair: true,
leadGenDamage: { externalParameterDamage: {
damageType: null, damageType: null,
isRepair: null, isRepair: null,
numberOfChips: null, numberOfChips: null,
@ -720,7 +720,7 @@ describe("vehicle-damage.vue", () => {
glassToReplace: [{ glassLocation: damageLocation, glassName: damageName }], glassToReplace: [{ glassLocation: damageLocation, glassName: damageName }],
}, },
isRepair: true, isRepair: true,
leadGenDamage: { externalParameterDamage: {
damageType: null, damageType: null,
isRepair: null, isRepair: null,
numberOfChips: null, numberOfChips: null,
@ -759,7 +759,7 @@ describe("vehicle-damage.vue", () => {
glassToReplace: [{ glassLocation: damageLocation, glassName: damageName }], glassToReplace: [{ glassLocation: damageLocation, glassName: damageName }],
}, },
isRepair: true, isRepair: true,
leadGenDamage: { externalParameterDamage: {
damageType: null, damageType: null,
isRepair: null, isRepair: null,
numberOfChips: null, numberOfChips: null,
@ -785,7 +785,7 @@ describe("vehicle-damage.vue", () => {
vehicle: {}, vehicle: {},
payment: { insuranceCoverage: { isVerified: true } }, payment: { insuranceCoverage: { isVerified: true } },
requiresVerifiedRedirecting: true, requiresVerifiedRedirecting: true,
leadGenDamage: { externalParameterDamage: {
damageType: null, damageType: null,
isRepair: null, isRepair: null,
numberOfChips: null, numberOfChips: null,
@ -809,10 +809,10 @@ describe("vehicle-damage.vue", () => {
}); });
describe("vehicle-damage.vue", () => { describe("vehicle-damage.vue", () => {
test("should call forwardButtonAction if isLeadGen is true and form is valid", async () => { test("should call forwardButtonAction if isExternalParameter is true and form is valid", async () => {
// Set up the store with isLeadGen as true // Set up the store with isExternalParameter as true
store.getters.isLeadGen = true; store.getters.isExternalParameter = true;
store.getters.leadGenDamage = { store.getters.externalParameterDamage = {
damageType: "windshieldReplace", damageType: "windshieldReplace",
isRepair: false, isRepair: false,
numberOfChips: null, numberOfChips: null,
@ -862,12 +862,6 @@ function setupMocks({ pageHeaderWidgetHeaderText, mountOptionsMockData, funnelCo
isVerified: false, isVerified: false,
}, },
}, },
// isLeadGen: false,
// leadGenDamage: {
// damageType: null,
// isRepair: null,
// numberOfChips: null,
// },
}, },
}, },
}; };
@ -880,7 +874,7 @@ function setupMocks({ pageHeaderWidgetHeaderText, mountOptionsMockData, funnelCo
//Mock api responses //Mock api responses
baseMixin.methods.dispatchStoreAction = jest.fn(); baseMixin.methods.dispatchStoreAction = jest.fn();
baseMixin.methods.dispatchStoreActionWithLogging = jest.fn(); baseMixin.methods.dispatchStoreActionWithLogging = jest.fn();
baseMixin.methods.hideFmgLoadingModal = jest.fn(); baseMixin.methods.ResetExternalParamsAndHideModal = jest.fn();
const apiResponses = { const apiResponses = {
cmsContent: { cmsContent: {
FunnelSubHeaderWidget: pageHeaderWidgetHeaderText, FunnelSubHeaderWidget: pageHeaderWidgetHeaderText,

View file

@ -150,18 +150,16 @@ export default {
vm.$refs.backGlassOptions.initializeComponent( vm.$refs.backGlassOptions.initializeComponent(
resultMap.damageOptions.backGlassOptions.availableReplacementOptions resultMap.damageOptions.backGlassOptions.availableReplacementOptions
); );
if (store.getters.isLeadGen) { if (store.getters.isExternalParameter) {
await nextTick(); await nextTick();
const isValid = await baseMixin.methods.isFormValid(vm.$refs.theForm); const isValid = await baseMixin.methods.isFormValid(vm.$refs.theForm);
if (isValid) { if (isValid) {
vm.forwardButtonAction(); vm.forwardButtonAction();
} else { } else {
baseMixin.methods.dispatchStoreAction(storeActions.RESET_LEADGEN_STATE); baseMixin.methods.ResetExternalParamsAndHideModal();
baseMixin.methods.hideFmgLoadingModal();
} }
} else { } else {
baseMixin.methods.dispatchStoreAction(storeActions.RESET_LEADGEN_STATE); baseMixin.methods.ResetExternalParamsAndHideModal();
baseMixin.methods.hideFmgLoadingModal();
} }
}); });
}, },
@ -211,8 +209,10 @@ export default {
return glass.glassLocation === damageLocationsSelected.WINDSHIELD; return glass.glassLocation === damageLocationsSelected.WINDSHIELD;
}) || }) ||
store.getters.damage.isRepair || store.getters.damage.isRepair ||
store.getters.leadGenDamage.isRepair || store.getters.externalParameterDamage.isRepair ||
store.getters.leadGenDamage.damageType?.toUpperCase().includes("WINDSHIELD") store.getters.externalParameterDamage.damageType
?.toUpperCase()
.includes("WINDSHIELD")
) { ) {
glassSelections.push(damageLocationsSelected.WINDSHIELD); glassSelections.push(damageLocationsSelected.WINDSHIELD);
} }
@ -246,15 +246,16 @@ export default {
}; };
if ( if (
store.getters.leadGenDamage.isRepair === undefined || store.getters.externalParameterDamage.isRepair === undefined ||
store.getters.damage.isRepair === undefined store.getters.damage.isRepair === undefined
) )
return windshieldOptions; return windshieldOptions;
if (store.getters.leadGenDamage.isRepair || store.getters.damage.isRepair) { if (store.getters.externalParameterDamage.isRepair || store.getters.damage.isRepair) {
windShieldOptions.selectedWindshieldDamageType = damageLocationsSelected.REPAIR; windShieldOptions.selectedWindshieldDamageType = damageLocationsSelected.REPAIR;
windShieldOptions.selectedWindshieldChipCount = windShieldOptions.selectedWindshieldChipCount =
store.getters.leadGenDamage.numberOfChips || store.getters.damage.numberOfChips; store.getters.externalParameterDamage.numberOfChips ||
store.getters.damage.numberOfChips;
} else { } else {
if ( if (
store.getters.damage.glassToReplace?.some((glass) => { store.getters.damage.glassToReplace?.some((glass) => {
@ -263,7 +264,8 @@ export default {
glass.glassName === damageLocationsSelected.SINGLE glass.glassName === damageLocationsSelected.SINGLE
); );
}) || }) ||
store.getters.leadGenDamage.damageType?.toUpperCase() === "WINDSHIELDREPLACE" store.getters.externalParameterDamage.damageType?.toUpperCase() ===
"WINDSHIELDREPLACE"
) { ) {
windShieldOptions.selectedWindshieldDamageType = windShieldOptions.selectedWindshieldDamageType =
damageLocationsSelected.REPLACE; damageLocationsSelected.REPLACE;

View file

@ -72,6 +72,7 @@ import { fmgPageValues } from "@/router/router-constants/fmgPage-values";
import { Form } from "vee-validate"; import { Form } from "vee-validate";
import store from "@/store"; import store from "@/store";
import vehicleQuestionsMixin from "@/mixins/vehicle-questions-mixin"; import vehicleQuestionsMixin from "@/mixins/vehicle-questions-mixin";
import baseMixin from "@/mixins/base-mixin.js";
export default { export default {
name: "vehicle-parts", name: "vehicle-parts",
@ -100,6 +101,9 @@ export default {
FeatureQuestionWidget: resultMap.cmsContent.FeatureQuestionWidget, FeatureQuestionWidget: resultMap.cmsContent.FeatureQuestionWidget,
}) })
); );
if (store.getters.isExternalParameter) {
baseMixin.methods.ResetExternalParamsAndHideModal();
}
}); });
}, },
data() { data() {

View file

@ -28,8 +28,8 @@ jest.mock("@/store", () => ({
applicationUser: { applicationUser: {
experiments: [{ universeName: "ConceptFunnel" }], experiments: [{ universeName: "ConceptFunnel" }],
}, },
isLeadGen: false, isExternalParameter: false,
leadGenVehicle: { externalParameterVehicle: {
year: null, year: null,
make: null, make: null,
model: null, model: null,
@ -93,8 +93,8 @@ describe("vehicle.vue", () => {
}); });
describe("vehicle.vue", () => { describe("vehicle.vue", () => {
test("should call forwardButtonAction if isLeadGen is true and form is valid", async () => { test("should call forwardButtonAction if isExternalParameter is true and form is valid", async () => {
store.getters.isLeadGen = true; store.getters.isExternalParameter = true;
// Create a shallow mount of MyComponent // Create a shallow mount of MyComponent
const { wrapper } = setupMocks(); const { wrapper } = setupMocks();
// Set displayNoServiceAlert to false // Set displayNoServiceAlert to false

View file

@ -128,7 +128,6 @@ export default {
async beforeRouteEnter(to, from, next) { async beforeRouteEnter(to, from, next) {
// Call APIs // Call APIs
const cmsContentPromise = fetchCmsContentForPage(to.query.fmgPage); const cmsContentPromise = fetchCmsContentForPage(to.query.fmgPage);
const experimentForLogging = store.getters.applicationUser.experiments.find( const experimentForLogging = store.getters.applicationUser.experiments.find(
(e) => e.universeName === experimentUniverses.CONCEPT_FUNNEL (e) => e.universeName === experimentUniverses.CONCEPT_FUNNEL
@ -141,16 +140,20 @@ export default {
var makeQuestionInitialDataPromise = null; var makeQuestionInitialDataPromise = null;
var modelQuestionInitialDataPromise = null; var modelQuestionInitialDataPromise = null;
var styleQuestionInitialDataPromise = null; var styleQuestionInitialDataPromise = null;
const year =
store.getters.externalParameterVehicle.year || store.getters.order.vehicle.year;
const make =
store.getters.externalParameterVehicle.make || store.getters.order.vehicle.make;
const model =
store.getters.externalParameterVehicle.model || store.getters.order.vehicle.model;
const style =
store.getters.externalParameterVehicle.style || store.getters.order.vehicle.style;
if ( if (make && model && style) {
(store.getters.leadGenVehicle.make || store.getters.order.vehicle.make) &&
(store.getters.leadGenVehicle.model || store.getters.order.vehicle.model) &&
(store.getters.leadGenVehicle.style || store.getters.order.vehicle.style)
) {
makeQuestionInitialDataPromise = baseMixin.methods.dispatchStoreActionWithLogging( makeQuestionInitialDataPromise = baseMixin.methods.dispatchStoreActionWithLogging(
storeActions.GET_VEHICLE_MAKES, storeActions.GET_VEHICLE_MAKES,
{ {
year: store.getters.leadGenVehicle.year || store.getters.order.vehicle.year, year: year,
}, },
"vehicle" "vehicle"
); );
@ -158,8 +161,8 @@ export default {
modelQuestionInitialDataPromise = baseMixin.methods.dispatchStoreActionWithLogging( modelQuestionInitialDataPromise = baseMixin.methods.dispatchStoreActionWithLogging(
storeActions.GET_VEHICLE_MODELS, storeActions.GET_VEHICLE_MODELS,
{ {
year: store.getters.leadGenVehicle.year || store.getters.order.vehicle.year, year: year,
make: store.getters.leadGenVehicle.make || store.getters.order.vehicle.make, make: make,
}, },
"vehicle" "vehicle"
); );
@ -167,9 +170,9 @@ export default {
styleQuestionInitialDataPromise = baseMixin.methods.dispatchStoreActionWithLogging( styleQuestionInitialDataPromise = baseMixin.methods.dispatchStoreActionWithLogging(
storeActions.GET_VEHICLE_STYLES, storeActions.GET_VEHICLE_STYLES,
{ {
year: store.getters.leadGenVehicle.year || store.getters.order.vehicle.year, year: year,
make: store.getters.leadGenVehicle.make || store.getters.order.vehicle.make, make: make,
model: store.getters.leadGenVehicle.model || store.getters.order.vehicle.model, model: model,
}, },
"vehicle" "vehicle"
); );
@ -217,30 +220,34 @@ export default {
let resultMap = await settleAllPromises(promiseResultMap); let resultMap = await settleAllPromises(promiseResultMap);
//Leadgen widget have different case style value so need to parse with NextGen //ExternalParameter widget have different case style value so need to parse with NextGen
if (store.getters.isLeadGen) { if (store.getters.isExternalParameter) {
if ( if (
makeQuestionInitialDataPromise && makeQuestionInitialDataPromise &&
modelQuestionInitialDataPromise && modelQuestionInitialDataPromise &&
styleQuestionInitialDataPromise styleQuestionInitialDataPromise
) { ) {
const matchingMake = resultMap.makeQuestionInitialData?.filter( const matchingMake = resultMap.makeQuestionInitialData?.filter(
(item) => item.toLowerCase() === store.getters.leadGenVehicle.make.toLowerCase() (item) =>
item.toLowerCase() ===
store.getters.externalParameterVehicle.make.toLowerCase()
); );
const matchingModel = resultMap.modelQuestionInitialData?.filter( const matchingModel = resultMap.modelQuestionInitialData?.filter(
(item) => (item) =>
item.toLowerCase() === store.getters.leadGenVehicle.model.toLowerCase() item.toLowerCase() ===
store.getters.externalParameterVehicle.model.toLowerCase()
); );
const matchingStyle = resultMap.styleQuestionInitialData?.filter( const matchingStyle = resultMap.styleQuestionInitialData?.filter(
(item) => (item) =>
item.toLowerCase() === store.getters.leadGenVehicle.style.toLowerCase() item.toLowerCase() ===
store.getters.externalParameterVehicle.style.toLowerCase()
); );
baseMixin.methods.dispatchStoreAction( baseMixin.methods.dispatchStoreAction(
storeActions.UPDATE_LEADGEN_MMS, storeActions.UPDATE_EXTERNAL_PARAMETER_MMS,
{ {
leadGenMake: matchingMake[0], externalParameterMake: matchingMake[0],
leadGenModel: matchingModel[0], externalParameterModel: matchingModel[0],
leadGenStyle: matchingStyle[0], externalParameterStyle: matchingStyle[0],
}, },
false false
); );
@ -262,23 +269,20 @@ export default {
resultMap.modelQuestionInitialData, resultMap.modelQuestionInitialData,
resultMap.styleQuestionInitialData resultMap.styleQuestionInitialData
); );
if (store.getters.isLeadGen) { if (store.getters.isExternalParameter) {
await vm.getVehicleDetails(); await vm.getVehicleDetails();
if (!vm.displayNoServiceAlert) { if (!vm.displayNoServiceAlert) {
const isValid = await baseMixin.methods.isFormValid(vm.$refs.theForm); const isValid = await baseMixin.methods.isFormValid(vm.$refs.theForm);
if (isValid) { if (isValid) {
vm.forwardButtonAction(); vm.forwardButtonAction();
} else { } else {
baseMixin.methods.dispatchStoreAction(storeActions.RESET_LEADGEN_STATE); baseMixin.methods.ResetExternalParamsAndHideModal();
baseMixin.methods.hideFmgLoadingModal();
} }
} else { } else {
baseMixin.methods.dispatchStoreAction(storeActions.RESET_LEADGEN_STATE); baseMixin.methods.ResetExternalParamsAndHideModal();
baseMixin.methods.hideFmgLoadingModal();
} }
} else { } else {
baseMixin.methods.dispatchStoreAction(storeActions.RESET_LEADGEN_STATE); baseMixin.methods.ResetExternalParamsAndHideModal();
baseMixin.methods.hideFmgLoadingModal();
} }
}); });
}, },
@ -465,16 +469,19 @@ export default {
this.styleOptions = styleOptions; this.styleOptions = styleOptions;
}, },
selectedYearfromStore() { selectedYearfromStore() {
return store.getters.leadGenVehicle.year ?? store.getters.vehicle.year?.toString(); return (
store.getters.externalParameterVehicle.year ??
store.getters.vehicle.year?.toString()
);
}, },
selectedMakefromStore() { selectedMakefromStore() {
return store.getters.leadGenVehicle.make ?? store.getters.vehicle.make; return store.getters.externalParameterVehicle.make ?? store.getters.vehicle.make;
}, },
selectedModelfromStore() { selectedModelfromStore() {
return store.getters.leadGenVehicle.model ?? store.getters.vehicle.model; return store.getters.externalParameterVehicle.model ?? store.getters.vehicle.model;
}, },
selectedStylefromStore() { selectedStylefromStore() {
return store.getters.leadGenVehicle.style ?? store.getters.vehicle.style; return store.getters.externalParameterVehicle.style ?? store.getters.vehicle.style;
}, },
async getMakeOptions(year) { async getMakeOptions(year) {
return await baseMixin.methods.dispatchStoreActionWithLogging( return await baseMixin.methods.dispatchStoreActionWithLogging(

View file

@ -192,9 +192,8 @@ export default {
// Call the "next" function to complete the transition to this page. // Call the "next" function to complete the transition to this page.
next((vm) => { next((vm) => {
vm.setCmsContent(resultMap.cmsContent); vm.setCmsContent(resultMap.cmsContent);
if (store.getters.isLeadGen) { if (store.getters.isExternalParameter) {
baseMixin.methods.dispatchStoreAction(storeActions.RESET_LEADGEN_STATE); baseMixin.methods.ResetExternalParamsAndHideModal();
baseMixin.methods.hideFmgLoadingModal();
} }
}); });
}, },

View file

@ -193,7 +193,8 @@ export default {
const container = document.getElementsByClassName("page-container-grouped-styles")[0]; const container = document.getElementsByClassName("page-container-grouped-styles")[0];
container.scrollTo({ top: container.scrollHeight, left: 0, behavior: "smooth" }); container.scrollTo({ top: container.scrollHeight, left: 0, behavior: "smooth" });
}, },
hideFmgLoadingModal() { ResetExternalParamsAndHideModal() {
this.dispatchStoreAction(storeActions.RESET_EXTERNAL_PARAMETER_STATE);
showFmgLoadingModal(false); showFmgLoadingModal(false);
}, },
async isFormValid(form) { async isFormValid(form) {

View file

@ -85,25 +85,6 @@ const routes = [
); );
const parentAccount = getQuerystringParameter(queryStrings.PARENT_ACCOUNT); const parentAccount = getQuerystringParameter(queryStrings.PARENT_ACCOUNT);
const correlationId = getQuerystringParameter(queryStrings.CORRELATION_ID); const correlationId = getQuerystringParameter(queryStrings.CORRELATION_ID);
const leadGenYear = getQuerystringParameter(queryStrings.VEHICLE_YEAR);
const leadGenMake = getQuerystringParameter(queryStrings.VEHICLE_MAKE);
const leadGenModel = getQuerystringParameter(queryStrings.VEHICLE_MODEL);
const leadGenStyle = getQuerystringParameter(queryStrings.VEHICLE_STYLE);
const leadGenDamage = getQuerystringParameter(queryStrings.VEHICLE_DAMAGE);
const leadGenZipCode = getQuerystringParameter(queryStrings.SERVICE_ZIP);
const leadGenEmail = getQuerystringParameter(queryStrings.EMAIL);
const leadGenIsInsurance = getQuerystringParameter(
queryStrings.IS_INSURANCE
);
const leadGenVinSelection = getQuerystringParameter(
queryStrings.VIN_SELECTION
);
const leadGenServicePackage = getQuerystringParameter(
queryStrings.SERVICE_PACKAGE
);
const leadGenNumberOfChips = getQuerystringParameter(
queryStrings.NUMBER_OF_CHIPS
);
if (referralNumber) { if (referralNumber) {
store.commit(storeMutations.UPDATE_REFERRAL_NUMBER, referralNumber); store.commit(storeMutations.UPDATE_REFERRAL_NUMBER, referralNumber);
store.commit(storeMutations.UPDATE_PARENT_ACCT_NUMBER, parentAccount); store.commit(storeMutations.UPDATE_PARENT_ACCT_NUMBER, parentAccount);
@ -113,58 +94,7 @@ const routes = [
); );
updateOrCreateFunnelCookie(); updateOrCreateFunnelCookie();
} }
if ( updateExternalParameterState();
leadGenYear &&
leadGenMake &&
leadGenModel &&
leadGenStyle &&
leadGenDamage &&
leadGenZipCode &&
leadGenEmail &&
leadGenIsInsurance &&
(leadGenDamage.toUpperCase() == "WINDSHIELDREPAIR" ||
leadGenVinSelection?.length > 0) &&
(leadGenIsInsurance?.toUpperCase() == "FALSE" ||
leadGenServicePackage?.length > 0) &&
(leadGenDamage.toUpperCase() != "WINDSHIELDREPAIR" ||
leadGenNumberOfChips?.length > 0)
) {
store.commit(storeMutations.UPDATE_IS_LEAD_GEN, true);
store.commit(storeMutations.UPDATE_LEAD_GEN_YEAR, leadGenYear);
store.commit(storeMutations.UPDATE_LEAD_GEN_MAKE, leadGenMake);
store.commit(storeMutations.UPDATE_LEAD_GEN_MODEL, leadGenModel);
store.commit(storeMutations.UPDATE_LEAD_GEN_STYLE, leadGenStyle);
store.commit(storeMutations.UPDATE_LEAD_GEN_DAMAGE_TYPE, leadGenDamage);
if (leadGenDamage.toUpperCase() == "WINDSHIELDREPLACE") {
store.commit(storeMutations.UPDATE_LEAD_GEN_IS_REPAIR, false);
store.commit(storeMutations.UPDATE_LEAD_GEN_NUMBER_OF_CHIPS, null);
} else if (leadGenDamage.toUpperCase() == "WINDSHIELDREPAIR") {
store.commit(storeMutations.UPDATE_LEAD_GEN_IS_REPAIR, true);
store.commit(
storeMutations.UPDATE_LEAD_GEN_NUMBER_OF_CHIPS,
leadGenNumberOfChips
);
}
store.commit(storeMutations.UPDATE_LEAD_GEN_ZIP_CODE, leadGenZipCode);
store.commit(
storeMutations.UPDATE_LEAD_GEN_EMAIL_ADDRESS,
leadGenEmail
);
if (leadGenIsInsurance?.toUpperCase() == "TRUE") {
store.commit(storeMutations.UPDATE_LEAD_GEN_IS_INSURANCE, true);
store.commit(
storeMutations.UPDATE_LEAD_GEN_SERVICE_PACKAGE,
leadGenServicePackage?.toLowerCase()
);
}
if (leadGenDamage.toUpperCase() != "WINDSHIELDREPAIR") {
store.commit(
storeMutations.UPDATE_LEAD_GEN_VIN_SELECTION,
leadGenVinSelection
);
}
}
const loadSessionResponse = await loadSessionIfPresent( const loadSessionResponse = await loadSessionIfPresent(
to.query.isInsurance != null to.query.isInsurance != null
? to.query.isInsurance == "true" ? to.query.isInsurance == "true"
@ -305,7 +235,7 @@ router.beforeEach(async (to, from, next) => {
const notToPIAReturn = toQueryPage != fmgPageValues.PAYMENT_PIA_RETURN; const notToPIAReturn = toQueryPage != fmgPageValues.PAYMENT_PIA_RETURN;
const isInIframe = window !== window.top; const isInIframe = window !== window.top;
if (store.getters.isLeadGen) { if (store.getters.isExternalParameter) {
// Check if alert event is on the bus // Check if alert event is on the bus
const alertEvent = eventBus.readEventFromBus( const alertEvent = eventBus.readEventFromBus(
globalEvents.Categories.GLOBAL_ALERT, globalEvents.Categories.GLOBAL_ALERT,
@ -318,7 +248,7 @@ router.beforeEach(async (to, from, next) => {
); );
// If alert event is on the bus, then display the alert // If alert event is on the bus, then display the alert
if (alertEvent !== undefined || unknownAlertEvent !== undefined) { if (alertEvent !== undefined || unknownAlertEvent !== undefined) {
store.commit(storeMutations.UPDATE_IS_LEAD_GEN, false); store.commit(storeMutations.UPDATE_IS_EXTERNAL_PARAMETER, false);
} }
} }
// fromPaymentToConfirmation workaround for navigating from an iframe but // fromPaymentToConfirmation workaround for navigating from an iframe but
@ -352,7 +282,7 @@ router.afterEach(async (to, from) => {
await saveSession({ pageNameToLog: to.query.fmgPage }); await saveSession({ pageNameToLog: to.query.fmgPage });
} }
} }
if (!store.getters.isLeadGen) { if (!store.getters.isExternalParameter) {
showFmgLoadingModal(false); showFmgLoadingModal(false);
} }
@ -575,7 +505,7 @@ async function DisplayPageError() {
type: globalEventTypes.Danger, type: globalEventTypes.Danger,
} }
); );
store.commit(storeMutations.UPDATE_IS_LEAD_GEN, false); store.commit(storeMutations.UPDATE_IS_EXTERNAL_PARAMETER, false);
baseMixin.methods.dispatchStoreAction(storeActions.RESET_SAVE_SESSION_PROMISE); baseMixin.methods.dispatchStoreAction(storeActions.RESET_SAVE_SESSION_PROMISE);
const pageError = getQuerystringParameter(queryStrings.PAGE_ERROR); const pageError = getQuerystringParameter(queryStrings.PAGE_ERROR);
@ -655,4 +585,67 @@ function getRedirectedStartPage() {
} }
} }
function updateExternalParameterState() {
const externalParameterYear = getQuerystringParameter(queryStrings.VEHICLE_YEAR);
const externalParameterMake = getQuerystringParameter(queryStrings.VEHICLE_MAKE);
const externalParameterModel = getQuerystringParameter(queryStrings.VEHICLE_MODEL);
const externalParameterStyle = getQuerystringParameter(queryStrings.VEHICLE_STYLE);
const externalParameterDamage = getQuerystringParameter(queryStrings.VEHICLE_DAMAGE);
const externalParameterZipCode = getQuerystringParameter(queryStrings.SERVICE_ZIP);
const externalParameterEmail = getQuerystringParameter(queryStrings.EMAIL);
const externalParameterIsInsurance = getQuerystringParameter(queryStrings.IS_INSURANCE);
const externalParameterVinSelection = getQuerystringParameter(queryStrings.VIN_SELECTION);
const externalParameterServicePackage = getQuerystringParameter(queryStrings.SERVICE_PACKAGE);
const externalParameterNumberOfChips = getQuerystringParameter(queryStrings.NUMBER_OF_CHIPS);
if (
externalParameterYear &&
externalParameterMake &&
externalParameterModel &&
externalParameterStyle
) {
store.commit(storeMutations.UPDATE_IS_EXTERNAL_PARAMETER, true);
store.commit(storeMutations.UPDATE_EXTERNAL_PARAMETER_YEAR, externalParameterYear);
store.commit(storeMutations.UPDATE_EXTERNAL_PARAMETER_MAKE, externalParameterMake);
store.commit(storeMutations.UPDATE_EXTERNAL_PARAMETER_MODEL, externalParameterModel);
store.commit(storeMutations.UPDATE_EXTERNAL_PARAMETER_STYLE, externalParameterStyle);
}
if (
externalParameterDamage &&
(externalParameterDamage.toUpperCase() != "WINDSHIELDREPAIR" ||
externalParameterNumberOfChips?.length > 0)
) {
store.commit(storeMutations.UPDATE_EXTERNAL_PARAMETER_DAMAGE_TYPE, externalParameterDamage);
if (externalParameterDamage.toUpperCase() == "WINDSHIELDREPLACE") {
store.commit(storeMutations.UPDATE_EXTERNAL_PARAMETER_IS_REPAIR, false);
store.commit(storeMutations.UPDATE_EXTERNAL_PARAMETER_NUMBER_OF_CHIPS, null);
} else if (externalParameterDamage.toUpperCase() == "WINDSHIELDREPAIR") {
store.commit(storeMutations.UPDATE_EXTERNAL_PARAMETER_IS_REPAIR, true);
store.commit(
storeMutations.UPDATE_EXTERNAL_PARAMETER_NUMBER_OF_CHIPS,
externalParameterNumberOfChips
);
}
}
if (externalParameterZipCode && externalParameterEmail) {
store.commit(storeMutations.UPDATE_EXTERNAL_PARAMETER_ZIP_CODE, externalParameterZipCode);
store.commit(
storeMutations.UPDATE_EXTERNAL_PARAMETER_EMAIL_ADDRESS,
externalParameterEmail
);
}
if (externalParameterIsInsurance?.toUpperCase() == "TRUE") {
store.commit(storeMutations.UPDATE_EXTERNAL_PARAMETER_IS_INSURANCE, true);
store.commit(
storeMutations.UPDATE_EXTERNAL_PARAMETER_SERVICE_PACKAGE,
externalParameterServicePackage?.toLowerCase()
);
}
if (externalParameterDamage.toUpperCase() != "WINDSHIELDREPAIR") {
store.commit(
storeMutations.UPDATE_EXTERNAL_PARAMETER_VIN_SELECTION,
externalParameterVinSelection
);
}
}
export default router; export default router;

View file

@ -176,7 +176,7 @@ const getDefaultState = () => {
}; };
export const state = getDefaultState(); export const state = getDefaultState();
export const leadGenState = getLeadGenDefaultState(); export const externalParameterState = getExternalParameterDefaultState();
// Export Mutations // Export Mutations
export const mutations = { export const mutations = {
// VEHICLE MUTATIONS // VEHICLE MUTATIONS
@ -414,91 +414,92 @@ export const mutations = {
state.applicationUser.eventBus.splice(itemIndex, 1); state.applicationUser.eventBus.splice(itemIndex, 1);
} }
}, },
//LEADGEN MUTATIONS //ExternalParameter MUTATIONS
updateIsLeadGen(state, isLeadGen) { updateIsExternalParameter(state, isExternalParameter) {
leadGenState.isLeadGen = isLeadGen; externalParameterState.isExternalParameter = isExternalParameter;
setLeadGenState(leadGenState); saveExternalParameterState(externalParameterState);
}, },
updateLeadGenYear(state, year) { updateExternalParameterYear(state, year) {
leadGenState.vehicle.year = year; externalParameterState.vehicle.year = year;
setLeadGenState(leadGenState); saveExternalParameterState(externalParameterState);
}, },
updateLeadGenMake(state, make) { updateExternalParameterMake(state, make) {
leadGenState.vehicle.make = make; externalParameterState.vehicle.make = make;
setLeadGenState(leadGenState); saveExternalParameterState(externalParameterState);
}, },
updateLeadGenModel(state, model) { updateExternalParameterModel(state, model) {
leadGenState.vehicle.model = model; externalParameterState.vehicle.model = model;
setLeadGenState(leadGenState); saveExternalParameterState(externalParameterState);
}, },
updateLeadGenStyle(state, style) { updateExternalParameterStyle(state, style) {
leadGenState.vehicle.style = style; externalParameterState.vehicle.style = style;
setLeadGenState(leadGenState); saveExternalParameterState(externalParameterState);
}, },
updateLeadGenIsRepair(state, isRepair) { updateExternalParameterIsRepair(state, isRepair) {
leadGenState.vehicleDamage.isRepair = isRepair; externalParameterState.vehicleDamage.isRepair = isRepair;
setLeadGenState(leadGenState); saveExternalParameterState(externalParameterState);
}, },
updateLeadGenNumberOfChips(state, numberOfChips) { updateExternalParameterNumberOfChips(state, numberOfChips) {
leadGenState.vehicleDamage.numberOfChips = numberOfChips; externalParameterState.vehicleDamage.numberOfChips = numberOfChips;
setLeadGenState(leadGenState); saveExternalParameterState(externalParameterState);
}, },
updateLeadGenDamageType(state, damageType) { updateExternalParameterDamageType(state, damageType) {
leadGenState.vehicleDamage.damageType = damageType; externalParameterState.vehicleDamage.damageType = damageType;
setLeadGenState(leadGenState); saveExternalParameterState(externalParameterState);
}, },
updateLeadGenZipCode(state, zipCode) { updateExternalParameterZipCode(state, zipCode) {
leadGenState.serviceZip.zipCode = zipCode; externalParameterState.serviceZip.zipCode = zipCode;
setLeadGenState(leadGenState); saveExternalParameterState(externalParameterState);
}, },
updateLeadGenEmailAddress(state, emailAddress) { updateExternalParameterEmailAddress(state, emailAddress) {
leadGenState.serviceZip.emailAddress = emailAddress; externalParameterState.serviceZip.emailAddress = emailAddress;
setLeadGenState(leadGenState); saveExternalParameterState(externalParameterState);
}, },
updateLeadGenIsInsurance(state, isInsurance) { updateExternalParameterIsInsurance(state, isInsurance) {
leadGenState.quote.isInsurance = isInsurance; externalParameterState.quote.isInsurance = isInsurance;
setLeadGenState(leadGenState); saveExternalParameterState(externalParameterState);
}, },
updateLeadGenVinSelection(state, vinSelection) { updateExternalParameterVinSelection(state, vinSelection) {
leadGenState.estimate.vinSelection = vinSelection; externalParameterState.estimate.vinSelection = vinSelection;
setLeadGenState(leadGenState); saveExternalParameterState(externalParameterState);
}, },
updateLeadGenServicePackage(state, servicePackage) { updateExternalParameterServicePackage(state, servicePackage) {
leadGenState.quote.servicePackage = servicePackage; externalParameterState.quote.servicePackage = servicePackage;
setLeadGenState(leadGenState); saveExternalParameterState(externalParameterState);
}, },
//RESET LEADGEN MUTATIONS //RESET ExternalParameter MUTATIONS
resetLeadGenVehicleState(state) { resetExternalParameterVehicleState(state) {
leadGenState.vehicle.year = externalParameterState.vehicle.year = null;
leadGenState.vehicle.make = externalParameterState.vehicle.make = null;
leadGenState.vehicle.model = externalParameterState.vehicle.model = null;
leadGenState.vehicle.style = externalParameterState.vehicle.style = null;
null;
setLeadGenState(leadGenState); saveExternalParameterState(externalParameterState);
}, },
resetLeadGenDamageState(state) { resetExternalParameterDamageState(state) {
leadGenState.vehicleDamage.isRepair = externalParameterState.vehicleDamage.isRepair = null;
leadGenState.vehicleDamage.numberOfChips = externalParameterState.vehicleDamage.numberOfChips = null;
leadGenState.vehicleDamage.damageType = externalParameterState.vehicleDamage.damageType = null;
null;
setLeadGenState(leadGenState); saveExternalParameterState(externalParameterState);
}, },
resetLeadGenEstimateState(state) { resetExternalParameterEstimateState(state) {
leadGenState.estimate.vinSelection = null; externalParameterState.estimate.vinSelection = null;
setLeadGenState(leadGenState); saveExternalParameterState(externalParameterState);
}, },
resetLeadGenServiceZipState(state) { resetExternalParameterServiceZipState(state) {
leadGenState.serviceZip.zipCode = leadGenState.serviceZip.emailAddress = null; externalParameterState.serviceZip.zipCode = null;
setLeadGenState(leadGenState); externalParameterState.serviceZip.emailAddress = null;
saveExternalParameterState(externalParameterState);
}, },
resetLeadGenQuoteState(state) { resetExternalParameterQuoteState(state) {
leadGenState.quote.isInsurance = null; externalParameterState.quote.isInsurance = null;
leadGenState.quote.servicePackage = null; externalParameterState.quote.servicePackage = null;
setLeadGenState(leadGenState); saveExternalParameterState(externalParameterState);
}, },
resetIsLeadGen(state) { resetIsExternalParameter(state) {
leadGenState.isLeadGen = null; externalParameterState.isExternalParameter = null;
setLeadGenState(leadGenState); saveExternalParameterState(externalParameterState);
}, },
// RESET DEPENDENCY MUTATIONS // RESET DEPENDENCY MUTATIONS
@ -890,12 +891,12 @@ export const getters = {
requiresVerifiedRedirecting: (state) => { requiresVerifiedRedirecting: (state) => {
return state.order?.referralNumber?.length === 6; return state.order?.referralNumber?.length === 6;
}, },
isLeadGen: (state) => leadGenState?.isLeadGen, isExternalParameter: (state) => externalParameterState?.isExternalParameter,
leadGenVehicle: (state) => leadGenState?.vehicle, externalParameterVehicle: (state) => externalParameterState?.vehicle,
leadGenDamage: (state) => leadGenState?.vehicleDamage, externalParameterDamage: (state) => externalParameterState?.vehicleDamage,
leadGenQuote: (state) => leadGenState?.quote, externalParameterQuote: (state) => externalParameterState?.quote,
leadGenServiceZip: (state) => leadGenState?.serviceZip, externalParameterServiceZip: (state) => externalParameterState?.serviceZip,
leadGenEstimate: (state) => leadGenState?.estimate, externalParameterEstimate: (state) => externalParameterState?.estimate,
}; };
function getNonFalseValuesOfPropertyInArrayOfObjects(array, propertyName) { function getNonFalseValuesOfPropertyInArrayOfObjects(array, propertyName) {
@ -2791,31 +2792,37 @@ export const actions = {
//restore user's experiments //restore user's experiments
context.commit(storeMutations.UPDATE_EXPERIMENTS, experiments); context.commit(storeMutations.UPDATE_EXPERIMENTS, experiments);
//clear leadGen session storage //clear externalParameter session storage
window.sessionStorage.removeItem("leadGenState"); window.sessionStorage.removeItem("externalParameterState");
}, },
resetSubmittedOrder(context) { resetSubmittedOrder(context) {
// clear from local storage // clear from local storage
window.sessionStorage.removeItem("submittedOrder"); window.sessionStorage.removeItem("submittedOrder");
}, },
resetLeadGenState(context) { resetExternalParameterState(context) {
if (context.getters.isLeadGen) { if (context.getters.isExternalParameter) {
context.commit(storeMutations.RESET_LEADGEN_VEHICLE_STATE); context.commit(storeMutations.RESET_EXTERNAL_PARAMETER_VEHICLE_STATE);
context.commit(storeMutations.RESETL_EADGEN_DAMAGE_STATE); context.commit(storeMutations.RESET_EXTERNAL_PARAMETER_DAMAGE_STATE);
context.commit(storeMutations.RESET_LEADGEN_ESTIMATE_STATE); context.commit(storeMutations.RESET_EXTERNAL_PARAMETER_ESTIMATE_STATE);
context.commit(storeMutations.RESET_LEADGEN_SERVICEZIP_STATE); context.commit(storeMutations.RESET_EXTERNAL_PARAMETER_SERVICEZIP_STATE);
context.commit(storeMutations.RESET_LEADGEN_QUOTE_STATE); context.commit(storeMutations.RESET_EXTERNAL_PARAMETER_QUOTE_STATE);
context.commit(storeMutations.RESET_IS_LEADGEN); context.commit(storeMutations.RESET_IS_EXTERNAL_PARAMETER);
} }
}, },
createLeadGenState(context) { updateExternalParameterMMS(context, externalParameterMMS) {
createLeadGenDefaultState(); context.commit(
}, storeMutations.UPDATE_EXTERNAL_PARAMETER_MAKE,
updateLeadGenMMS(context, leadGenMMS) { externalParameterMMS.externalParameterMake
context.commit(storeMutations.UPDATE_LEAD_GEN_MAKE, leadGenMMS.leadGenMake); );
context.commit(storeMutations.UPDATE_LEAD_GEN_MODEL, leadGenMMS.leadGenModel); context.commit(
context.commit(storeMutations.UPDATE_LEAD_GEN_STYLE, leadGenMMS.leadGenStyle); storeMutations.UPDATE_EXTERNAL_PARAMETER_MODEL,
externalParameterMMS.externalParameterModel
);
context.commit(
storeMutations.UPDATE_EXTERNAL_PARAMETER_STYLE,
externalParameterMMS.externalParameterStyle
);
}, },
}; };
@ -3304,10 +3311,10 @@ async function resetScheduleIfUnavailable(context, order, pageNameToLog) {
} }
} }
} }
function createLeadGenDefaultState() { function createExternalParameterDefaultState() {
// create default leadGen state // create default externalParameter state
const leadGenDefaultState = { const externalParameterDefaultState = {
isLeadGen: null, isExternalParameter: null,
vehicle: { vehicle: {
year: null, year: null,
make: null, make: null,
@ -3332,15 +3339,15 @@ function createLeadGenDefaultState() {
}, },
}; };
// set to session storage // set to session storage
setLeadGenState(leadGenDefaultState); saveExternalParameterState(externalParameterDefaultState);
} }
function getLeadGenDefaultState() { function getExternalParameterDefaultState() {
const leadGenState = window.sessionStorage.getItem("leadGenState"); const externalParameterState = window.sessionStorage.getItem("externalParameterState");
if (leadGenState === null) { if (externalParameterState === null) {
createLeadGenDefaultState(); createExternalParameterDefaultState();
} }
return JSON.parse(window.sessionStorage.getItem("leadGenState")); return JSON.parse(window.sessionStorage.getItem("externalParameterState"));
} }
async function setLeadGenState(leadGenState) { function saveExternalParameterState(externalParameterState) {
window.sessionStorage.setItem("leadGenState", JSON.stringify(leadGenState)); window.sessionStorage.setItem("externalParameterState", JSON.stringify(externalParameterState));
} }