diff --git a/src/helpers/cms-content-helper.js b/src/helpers/cms-content-helper.js index 450875d0f..e5e189908 100644 --- a/src/helpers/cms-content-helper.js +++ b/src/helpers/cms-content-helper.js @@ -3,29 +3,48 @@ import store from "@/store"; import { dynamicStrings } from "@/constants/dynamic-strings"; export function fetchCmsContentForPage(fmgPage) { - return store.dispatch(storeActions.GET_PAGE_DATA, { pageName: fmgPage }).then((response) => { - const pageDataFromCms = {}; + return store + .dispatch(storeActions.GET_PAGE_DATA, { pageName: fmgPage }) + .then((response) => { + const pageDataFromCms = {}; - response.data.Result.forEach((widget) => { - let widgetWithReplacements = findAndReplaceGlobalStateValues(widget.Model, widget.Name); + response.data.Result.forEach((widget) => { + let widgetWithReplacements = findAndReplaceGlobalStateValues( + widget.Model, + widget.Name + ); - // If we already have this widget, push it on the collection - if (widgetWithReplacements.Name in pageDataFromCms) { - pageDataFromCms[widgetWithReplacements.Name].push(widgetWithReplacements.Model); - return; + // If we already have this widget, push it on the collection + if (widgetWithReplacements.Name in pageDataFromCms) { + pageDataFromCms[widgetWithReplacements.Name].push(widgetWithReplacements.Model); + return; + } + + pageDataFromCms[widgetWithReplacements.Name] = [widgetWithReplacements.Model]; + }); + + Object.keys(pageDataFromCms).forEach((key) => { + if (pageDataFromCms[key].length === 1) { + pageDataFromCms[key] = pageDataFromCms[key][0]; + } + }); + + return pageDataFromCms; + }) + .catch((error) => { + // Client-specific config pages are optional. When one doesn't exist + // the CMS returns a 404 - treat that as "no overrides" instead of an + // error so callers receive an empty config object. + const isClientConfigPage = typeof fmgPage === "string" && fmgPage.startsWith("client_"); + const status = error?.status ?? error?.response?.status; + const isNotFound = status == 404; + + if (isClientConfigPage && isNotFound) { + return {}; } - pageDataFromCms[widgetWithReplacements.Name] = [widgetWithReplacements.Model]; + return Promise.reject(error); }); - - Object.keys(pageDataFromCms).forEach((key) => { - if (pageDataFromCms[key].length === 1) { - pageDataFromCms[key] = pageDataFromCms[key][0]; - } - }); - - return pageDataFromCms; - }); } // Function to convert a string, into a matching global state item. diff --git a/src/layouts/coverage-statement/coverage-statement.vue b/src/layouts/coverage-statement/coverage-statement.vue index acdab2f17..f3269bcd9 100644 --- a/src/layouts/coverage-statement/coverage-statement.vue +++ b/src/layouts/coverage-statement/coverage-statement.vue @@ -127,7 +127,7 @@ export default { const resultMap = await settleAllPromises(promiseResultMap); next((vm) => { vm.setCmsContent(resultMap.cmsContent); - vm.clientConfig = resultMap.clientConfig; + vm.clientConfig = resultMap.clientConfig ?? {}; debugLog( `coverage-statement clientConfig::${clientConfigPageName}`, JSON.stringify(vm.clientConfig) @@ -182,7 +182,7 @@ export default { return this.clientConfig?.ClientLogoWidget?.Image || ""; }, deductibleAmount() { - return this.$store.getters.order.policy.currentDeductible; + return Number(this.$store.getters.order.policy.currentDeductible); }, cashPrice() { const lineItems = this.$store.getters.order.lineItems; diff --git a/src/layouts/duplicate-check/duplicate-check.vue b/src/layouts/duplicate-check/duplicate-check.vue index 587babde5..40f0a8c0d 100644 --- a/src/layouts/duplicate-check/duplicate-check.vue +++ b/src/layouts/duplicate-check/duplicate-check.vue @@ -94,7 +94,7 @@ export default { const resultMap = await settleAllPromises(promiseResultMap); next((vm) => { vm.setCmsContent(resultMap.cmsContent); - vm.clientConfig = resultMap.clientConfig; + vm.clientConfig = resultMap.clientConfig ?? {}; debugLog( `duplicate-check clientConfig::${clientConfigPageName}`, JSON.stringify(vm.clientConfig) diff --git a/src/layouts/endorsements/endorsements.vue b/src/layouts/endorsements/endorsements.vue index 0d6591544..7aa027dec 100644 --- a/src/layouts/endorsements/endorsements.vue +++ b/src/layouts/endorsements/endorsements.vue @@ -90,7 +90,7 @@ export default { const resultMap = await settleAllPromises(promiseResultMap); next((vm) => { vm.setCmsContent(resultMap.cmsContent); - vm.clientConfig = resultMap.clientConfig; + vm.clientConfig = resultMap.clientConfig ?? {}; debugLog( `endorsements clientConfig::${clientConfigPageName}`, JSON.stringify(vm.clientConfig) diff --git a/src/layouts/insurance-details/insurance-details.vue b/src/layouts/insurance-details/insurance-details.vue index 0f3f483f1..d4a686fa1 100644 --- a/src/layouts/insurance-details/insurance-details.vue +++ b/src/layouts/insurance-details/insurance-details.vue @@ -80,8 +80,8 @@ isRequired class="mb-4" cmsWidgetName="ApartmentWidget" - v-model="apartment" - inputId="apartment" /> + v-model="streetAddress2" + inputId="streetAddress2" /> { vm.setCmsContent(resultMap.cmsContent); - vm.clientConfig = resultMap.clientConfig; + vm.clientConfig = resultMap.clientConfig ?? {}; debugLog( `policy-driver clientConfig::${clientConfigPageName}`, JSON.stringify(vm.clientConfig) diff --git a/src/layouts/policy-info-submitted/policy-info-submitted.vue b/src/layouts/policy-info-submitted/policy-info-submitted.vue index 901480407..5afec595d 100644 --- a/src/layouts/policy-info-submitted/policy-info-submitted.vue +++ b/src/layouts/policy-info-submitted/policy-info-submitted.vue @@ -78,7 +78,7 @@ export default { const resultMap = await settleAllPromises(promiseResultMap); next((vm) => { vm.setCmsContent(resultMap.cmsContent); - vm.clientConfig = resultMap.clientConfig; + vm.clientConfig = resultMap.clientConfig ?? {}; debugLog( `policy-info-submitted clientConfig::${clientConfigPageName}`, JSON.stringify(vm.clientConfig) diff --git a/src/layouts/policy-info/policy-info.vue b/src/layouts/policy-info/policy-info.vue index f752c1611..300429a34 100644 --- a/src/layouts/policy-info/policy-info.vue +++ b/src/layouts/policy-info/policy-info.vue @@ -410,7 +410,7 @@ export default { const resultMap = await settleAllPromises(promiseResultMap); next((vm) => { vm.setCmsContent(resultMap.cmsContent); - vm.clientConfig = resultMap.clientConfig; + vm.clientConfig = resultMap.clientConfig ?? {}; debugLog( `policy-infoclientConfig::${clientConfigPageName}`, JSON.stringify(vm.clientConfig) diff --git a/src/layouts/policy-vehicle/policy-vehicle.vue b/src/layouts/policy-vehicle/policy-vehicle.vue index 8963d444a..d936fa954 100644 --- a/src/layouts/policy-vehicle/policy-vehicle.vue +++ b/src/layouts/policy-vehicle/policy-vehicle.vue @@ -83,7 +83,7 @@ export default { const resultMap = await settleAllPromises(promiseResultMap); next((vm) => { vm.setCmsContent(resultMap.cmsContent); - vm.clientConfig = resultMap.clientConfig; + vm.clientConfig = resultMap.clientConfig ?? {}; debugLog( `policy-vehicle clientConfig::${clientConfigPageName}`, JSON.stringify(vm.clientConfig) diff --git a/src/layouts/recalibration-info/recalibration-info.vue b/src/layouts/recalibration-info/recalibration-info.vue index 8666db280..032348457 100644 --- a/src/layouts/recalibration-info/recalibration-info.vue +++ b/src/layouts/recalibration-info/recalibration-info.vue @@ -96,7 +96,7 @@ export default { const showSaveProgressModal = !(emailFromStore?.length > 0); next((vm) => { vm.setCmsContent(resultMap.cmsContent); - vm.clientConfig = resultMap.clientConfig; + vm.clientConfig = resultMap.clientConfig ?? {}; vm.showSaveProgressModal = showSaveProgressModal; vm.recalibrationInfoDesktopImage = vm.getCmsContent("AdasInfoDesktopWidget", "Image"); vm.recalibrationInfoMobileImage = vm.getCmsContent("AdasInfoMobileWidget", "Image"); diff --git a/src/layouts/verify-details/verify-details.vue b/src/layouts/verify-details/verify-details.vue index 9fcf1c375..5fcf78049 100644 --- a/src/layouts/verify-details/verify-details.vue +++ b/src/layouts/verify-details/verify-details.vue @@ -138,7 +138,7 @@ export default { const resultMap = await settleAllPromises(promiseResultMap); next((vm) => { vm.setCmsContent(resultMap.cmsContent); - vm.clientConfig = resultMap.clientConfig; + vm.clientConfig = resultMap.clientConfig ?? {}; debugLog( `verify-details clientConfig::${clientConfigPageName}`, JSON.stringify(vm.clientConfig) diff --git a/src/mixins/analytics-mixin.js b/src/mixins/analytics-mixin.js index b33ede8ae..0a3b43f56 100644 --- a/src/mixins/analytics-mixin.js +++ b/src/mixins/analytics-mixin.js @@ -264,6 +264,9 @@ export default { sessionData.coverageSubStatus = order?.payment?.insuranceCoverage?.coverageSubStatus; sessionData.isNoComp = order?.policy?.isNoComp; sessionData.isItac = order?.policy?.isItac; + sessionData.isClaimAndCoverage = order.payment.isClaimAndCoverage; + sessionData.vinRequired = order.vehicle.vinRequired ?? false; + sessionData.installOemGlass = order.damage?.installOemGlass ?? false; sessionData.subTotalPrice = getSubTotal(order?.lineItems); sessionData.totalPrice = getAmountDue(order?.lineItems, true); sessionData.userAgent = navigator.userAgent; diff --git a/src/store/index.js b/src/store/index.js index 3f2cf5e0d..18c7f3cbc 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -178,11 +178,13 @@ const getDefaultState = () => { insuranceCompanyName: null, phoneNumber: null, phoneExtension: null, - streetAddress: null, - apartment: null, - city: null, - state: null, - zipCode: null, + policyAddress: { + streetAddress: null, + streetAddress2: null, + city: null, + state: null, + zipCode: null, + }, dateOfBirth: null, lossTime: null, lossLocation: null, @@ -361,19 +363,19 @@ export const mutations = { state.order.policy.phoneExtension = phoneExtension; }, updateStreetAddress(state, streetAddress) { - state.order.policy.streetAddress = streetAddress; + state.order.policy.policyAddress.streetAddress = streetAddress; }, - updateApartment(state, apartment) { - state.order.policy.apartment = apartment; + updateStreetAddress2(state, streetAddress2) { + state.order.policy.policyAddress.streetAddress2 = streetAddress2; }, updateCity(state, city) { - state.order.policy.city = city; + state.order.policy.policyAddress.city = city; }, updateState(state, stateValue) { - state.order.policy.state = stateValue; + state.order.policy.policyAddress.state = stateValue; }, updateZipCode(state, zipCode) { - state.order.policy.zipCode = zipCode; + state.order.policy.policyAddress.zipCode = zipCode; }, updateClaimNumber(state, claimNumber) { state.order.policy.claimNumber = claimNumber; @@ -405,11 +407,11 @@ export const mutations = { state.order.policy.policyNumber = null; state.order.policy.claimNumber = null; state.order.policy.insuranceCompanyName = null; - state.order.policy.streetAddress = null; - state.order.policy.apartment = null; - state.order.policy.city = null; - state.order.policy.state = null; - state.order.policy.zipCode = null; + state.order.policy.policyAddress.streetAddress = null; + state.order.policy.policyAddress.streetAddress2 = null; + state.order.policy.policyAddress.city = null; + state.order.policy.policyAddress.state = null; + state.order.policy.policyAddress.zipCode = null; state.order.damage.dateOfLoss = null; state.order.damage.damageCause = null; }, @@ -563,11 +565,11 @@ export const mutations = { updateInsuranceDetails(state, insuranceDetails) { if (insuranceDetails) { state.order.policy.policyNumber = insuranceDetails.policyNumber; - state.order.policy.streetAddress = insuranceDetails.streetAddress; - state.order.policy.apartment = insuranceDetails.apartment; - state.order.policy.city = insuranceDetails.city; - state.order.policy.state = insuranceDetails.state; - state.order.policy.zipCode = insuranceDetails.zipCode; + state.order.policy.policyAddress.streetAddress = insuranceDetails.streetAddress; + state.order.policy.policyAddress.streetAddress2 = insuranceDetails.streetAddress2; + state.order.policy.policyAddress.city = insuranceDetails.city; + state.order.policy.policyAddress.state = insuranceDetails.state; + state.order.policy.policyAddress.zipCode = insuranceDetails.zipCode; state.order.policy.claimNumber = insuranceDetails.claimNumber; state.order.policy.phoneNumber = insuranceDetails.phoneNumber; state.order.policy.phoneExtension = insuranceDetails.phoneExtension; @@ -577,8 +579,15 @@ export const mutations = { state.order.policy.lastName = insuranceDetails.lastName; state.order.policy.lossLocation = insuranceDetails.lossLocation; state.order.policy.subrogation = insuranceDetails.subrogation; - state.order.policy.streetAddress = insuranceDetails.streetAddress; + state.order.policy.currentDeductible = insuranceDetails.currentDeductible; + state.order.policy.originalDeductible = insuranceDetails.originalDeductible; + state.order.payment.insuranceCoverage.coverageStatus = coverageStatusValue( + insuranceDetails.coverageStatus + ); + state.order.payment.insuranceCoverage.coverageSubStatus = + insuranceDetails.coverageSubStatus; } + console.log("::::" + state.order.payment.insuranceCoverage.coverageStatus); }, updateDamageDetails(state, damageDetails) { if (damageDetails) { @@ -976,13 +985,20 @@ export const mutations = { ? true : false; state.order.policy.policyNumber = sessionInformation.order.policy?.policyNumber; + state.order.policy.claimNumber = sessionInformation.order.policy?.claimNumber; state.order.policy.insuranceCompanyName = sessionInformation.order.policy?.insuranceCompanyName; - //state.order.policy.streetAddress = sessionInformation.order.policy?.streetAddress; - //state.order.policy.apartment = sessionInformation.order.policy?.apartment; - //state.order.policy.city = sessionInformation.order.policy?.city; - //state.order.policy.state = sessionInformation.order.policy?.state; - //state.order.policy.zipCode = sessionInformation.order.policy?.zipCode; + + if (!state.order.policy.policyAddress) { + state.order.policy.policyAddress = {}; + } + const sessionPolicyAddress = sessionInformation.order.policy?.address; + state.order.policy.policyAddress.streetAddress = sessionPolicyAddress?.streetAddress; + state.order.policy.policyAddress.streetAddress2 = sessionPolicyAddress?.streetAddress2; + state.order.policy.policyAddress.city = sessionPolicyAddress?.city; + state.order.policy.policyAddress.state = sessionPolicyAddress?.state; + state.order.policy.policyAddress.zipCode = sessionPolicyAddress?.zipCode; + state.order.policy.isNoComp = coverageTypeValue(sessionInformation?.order.insuranceCoverage.coverageType) === coverageType.NOCOMP @@ -1818,6 +1834,7 @@ export const actions = { coverageSubStatus, isNoComp, isItac, + isClaimAndCoverage, subTotalPrice, totalPrice, userAgent, @@ -1868,6 +1885,7 @@ export const actions = { deductible: deductible, isNoComp: isNoComp, isItac: isItac, + isClaimAndCoverage: isClaimAndCoverage, subTotalPrice: subTotalPrice, totalPrice: totalPrice, userAgent: userAgent, @@ -2648,6 +2666,8 @@ export const actions = { moldingQuestionAnswers: order.damage.moldingQuestionAnswers, capabilityQuestionAnswers: order.damage.capabilityQuestionAnswers, installOemGlass: order.damage.installOemGlass, + dateOfLoss: order.damage.dateOfLoss, + damageCause: order.damage.damageCause, }, lineItems: { glassParts: lineItems.glassParts, @@ -2699,6 +2719,15 @@ export const actions = { isNoComp: order.policy?.isNoComp, currentDeductible: order.policy?.currentDeductible, originalDeductible: order.policy?.originalDeductible, + policyAddress: { + streetAddress: order.policy?.policyAddress?.streetAddress, + streetAddress2: order.policy?.policyAddress?.streetAddress2, + city: order.policy?.policyAddress?.city, + state: order.policy?.policyAddress?.state, + zipCode: order.policy?.policyAddress?.zipCode, + }, + policyNumber: order.policy?.policyNumber, + claimNumber: order.policy?.claimNumber, }, serviceLocation: { streetAddress: order.serviceLocation.address,