cleanup, setup state for referrals

This commit is contained in:
FrankRua 2022-03-21 16:18:25 -04:00
parent a279c9d011
commit f7ddb5ff6c
4 changed files with 55 additions and 57 deletions

View file

@ -9,8 +9,8 @@ import baseMixin from "../mixins/base-mixin";
export async function loadReferralFromHeritageFunnelIfPresent() { export async function loadReferralFromHeritageFunnelIfPresent() {
const orderInfo = getHeritageCookieValue(); const orderInfo = getHeritageCookieValue();
// Do nothing if there is no cookie. // Do nothing if there is no cookie or no correlation id.
if(orderInfo === null){ if (orderInfo === null || orderInfo.ReferralCorrelationId === undefined) {
return; return;
} }
@ -22,12 +22,14 @@ export async function loadReferralFromHeritageFunnelIfPresent() {
} }
// Load referral if there is a cookie, and it doesn't indicate it needs a state reset. // Load referral if there is a cookie, and it doesn't indicate it needs a state reset.
await loadOrder(); await loadOrder(orderInfo.ReferralNumber, orderInfo.ReferralDate, orderInfo.ReferralCorrelationId);
} }
// Navigate to Heritage Funnel with the proper URL format.
// Will Save the referral if there is one in state, or create a new one if one is not in state.
export async function navigateToHeritageFunnel() { export async function navigateToHeritageFunnel() {
await saveOrder(); await saveOrder();
const referralCorrelationId = store.getters.referralCorrelationId; const referralCorrelationId = store.state.order.referralCorrelationId;
router.navigate( router.navigate(
navigationScenarios.MOVE_TO_HERITAGE_FUNNEL, navigationScenarios.MOVE_TO_HERITAGE_FUNNEL,
@ -42,34 +44,36 @@ export async function navigateToHeritageFunnel() {
); );
} }
// Saves Referral if one is available and commits referral details to state.
// Also sets cookie properties.
export async function saveOrder() { export async function saveOrder() {
const savedOrderInfo = (await baseMixin.methods.dispatchNonBlockingStoreAction(storeActions.SAVE_ORDER)).data; const savedOrderInfo = await baseMixin.methods.dispatchNonBlockingStoreAction(storeActions.SAVE_ORDER);
// Save the referral information back from the store. // Save the referral information back from the store.
await baseMixin.methods.dispatchNonBlockingStoreAction(storeActions.SET_REFERRAL_INFORMATION, { await baseMixin.methods.dispatchNonBlockingStoreAction(storeActions.SET_REFERRAL_INFORMATION, {
referralNumber: savedOrderInfo.referralNumber, referralNumber: savedOrderInfo.data.referralNumber,
correlationId: savedOrderInfo.referralCorrelationId, correlationId: savedOrderInfo.data.referralCorrelationId,
referralDate: savedOrderInfo.referralDate, referralDate: savedOrderInfo.data.referralDate,
}) }, false);
// Set cookie properties. // Set cookie properties.
setHeritageCookieProperties({ setHeritageCookieProperties({
DidHeritageFunnelUpdateLast: false DidHeritageFunnelUpdateLast: false
}) });
} }
export async function loadOrder() { // Loads order based on referral data in cookie, also loads the referral information into state.
const loadOrderInfo = (await baseMixin.methods.dispatchNonBlockingStoreAction(storeActions.LOAD_ORDER)).data; export async function loadOrder(referralNumber, referralDate, correlationId) {
const loadOrderResponse = await baseMixin.methods.dispatchNonBlockingStoreAction(storeActions.LOAD_ORDER,
// Save the data from the loaded order to state. { referralNumber: referralNumber, referralDate: referralDate, correlationId: correlationId }
await baseMixin.methods.dispatchNonBlockingStoreAction(storeActions.SET_LOAD_ORDER_DATA, { loadOrderInfo }); , false);
} }
// --------- PRIVATE FUNCTIONS --------- // --------- PRIVATE FUNCTIONS ---------
/* Start cookie related functions */ /* Start cookie related functions */
export function getHeritageCookieValue() { export function getHeritageCookieValue() {
console.log("A") console.log("getHeritageCookieValue called");
const cookieJson = document.cookie const cookieJson = document.cookie
?.split("; ") ?.split("; ")
?.find(row => row.startsWith(`${cookieNames.ORDER_INFO}=`)) ?.find(row => row.startsWith(`${cookieNames.ORDER_INFO}=`))
@ -77,7 +81,7 @@ export function getHeritageCookieValue() {
try { try {
return JSON.parse(cookieJson); return JSON.parse(cookieJson);
} catch(error) { } catch (error) {
return null; return null;
} }
} }

View file

@ -4,7 +4,6 @@ import { storeActions } from "@/constants/store-actions";
import { lazyLoadComponent } from "@/router/dynamic-routing/component-loader.js"; import { lazyLoadComponent } from "@/router/dynamic-routing/component-loader.js";
import { routingTable } from "@/router/router-constants/routing-table.js"; import { routingTable } from "@/router/router-constants/routing-table.js";
import { globalEvents, globalEventTypes } from "@/constants/events"; import { globalEvents, globalEventTypes } from "@/constants/events";
import { routerParameterKeys } from '@/router/router-constants/router-parameter-keys'
import { loadReferralFromHeritageFunnelIfPresent, saveOrder, getHeritageCookieValue } from "@/helpers/heritage-integration-helper"; import { loadReferralFromHeritageFunnelIfPresent, saveOrder, getHeritageCookieValue } from "@/helpers/heritage-integration-helper";
import baseMixin from "@/mixins/base-mixin"; import baseMixin from "@/mixins/base-mixin";
@ -30,17 +29,17 @@ const routes = [
path: "/", path: "/",
name: "root", name: "root",
async beforeEnter(to, from, next) { async beforeEnter(to, from, next) {
// On entering the concept funnel
if (from.redirectedFrom === undefined) {
// Read cookie information, decide what to do next
loadReferralFromHeritageFunnelIfPresent();
}
// If we have no query string, or we don't have the FmgPage query string. // If we have no query string, or we don't have the FmgPage query string.
if (to.query.fmgPage === undefined) { if (to.query.fmgPage === undefined) {
await GoToFunnelStartOn404(next); await GoToFunnelStartOn404(next);
} else { } else {
try { try {
// On entering the concept funnel "fresh", read cookie information, decide what to do next.
if (from.redirectedFrom === undefined) {
await loadReferralFromHeritageFunnelIfPresent();
}
// If we already have our route, go to it. // If we already have our route, go to it.
if (router.hasRoute(to.query.fmgPage)) { if (router.hasRoute(to.query.fmgPage)) {
// Since our route is already in scope, we can grab the component from it and call the arePagePrerequisitesValid function. // Since our route is already in scope, we can grab the component from it and call the arePagePrerequisitesValid function.
@ -135,15 +134,16 @@ async function navigate(scenario, currentRoute, invalidateOnSave, optionalQuery
baseMixin.methods.savePageDataToStore(destinationFmgPageValue, optionalPageData); baseMixin.methods.savePageDataToStore(destinationFmgPageValue, optionalPageData);
// if cookie and referralNumber exists // if cookie and referralNumber exists
if (getHeritageCookieValue()?.ReferralNumber) if (getHeritageCookieValue()?.ReferralNumber) {
saveOrder(); await saveOrder();
}
router.push({ router.push({
name: "root", name: "root",
query: Object.assign(optionalQuery, { query: Object.assign(optionalQuery, {
fmgPage: destinationFmgPageValue, fmgPage: destinationFmgPageValue,
}), }),
params: Object.assign(optionalParams, {[routerParameterKeys.FROM_ROUTER_NAVIGATE]: true}) params: optionalParams
}); });
} else if (matchingScenarioMap.destinationUrl !== undefined) { } else if (matchingScenarioMap.destinationUrl !== undefined) {
navigateToUrl(matchingScenarioMap.destinationUrl, optionalQuery); navigateToUrl(matchingScenarioMap.destinationUrl, optionalQuery);
@ -152,7 +152,6 @@ async function navigate(scenario, currentRoute, invalidateOnSave, optionalQuery
// Get navigation map depending on the scenario and the current 'page' you're on. // Get navigation map depending on the scenario and the current 'page' you're on.
function getNavigationMap(scenario, currentRoute) { function getNavigationMap(scenario, currentRoute) {
console.log("A")
const fmgPageValue = currentRoute.query.fmgPage; const fmgPageValue = currentRoute.query.fmgPage;
const matchedQueryValue = routingTable const matchedQueryValue = routingTable
.filter( .filter(

View file

@ -1,5 +1,3 @@
const routerParameterKeys = { const routerParameterKeys = { };
FROM_ROUTER_NAVIGATE: 'fromRouterNavigate',
};
export { routerParameterKeys }; export { routerParameterKeys };

View file

@ -148,25 +148,25 @@ export const mutations = {
// Misc Mutations // Misc Mutations
setLoadOrderInformation(state, orderInformation) { setLoadOrderInformation(state, orderInformation) {
state.order.referralNumber = orderInformation.ReferralNumber; state.order.referralNumber = orderInformation.referralNumber;
state.order.referralDate = orderInformation.ReferralDate; state.order.referralDate = orderInformation.referralDate;
state.order.referralCorrelationId = orderInformation.CorrelationId; state.order.referralCorrelationId = orderInformation.correlationId;
state.order.vehicle = { state.order.vehicle = {
year: orderInformation.Year, year: orderInformation.vehicle.year,
make: orderInformation.Make, make: orderInformation.vehicle.make,
model: orderInformation.Model, model: orderInformation.vehicle.model,
style: orderInformation.Style, style: orderInformation.vehicle.style,
carId: orderInformation.CarId, carId: orderInformation.vehicle.carId,
category: orderInformation.Category, category: orderInformation.vehicle.category,
imageUrl: orderInformation.ImageUrl, imageUrl: orderInformation.vehicle.imageUrl,
imageVifNumber: orderInformation.ImageVifNumber, imageVifNumber: orderInformation.vehicle.imageVifNumber,
imageColor: orderInformation.ImageColor imageColor: orderInformation.vehicle.imageVifColor
}; };
state.order.damage.glassToReplace = orderInformation.GlassToReplace; state.order.damage.glassToReplace = orderInformation.glassToReplace;
state.order.damage.isRepair = orderInformation.IsRepair; state.order.damage.isRepair = orderInformation.isRepair;
state.order.damage.numberOfChips = orderInformation.NumberOfChips; state.order.damage.numberOfChips = orderInformation.numberOfChips;
state.order.lineItems.glassParts = orderInformation.Parts; state.order.lineItems.glassParts = orderInformation.parts;
state.order.parentAccountNumber = orderInformation.ParentAccountNumber; state.order.parentAccountNumber = orderInformation.parentAccountNumber;
} }
} }
@ -184,9 +184,6 @@ export const getters = {
eventBus: (state) => state.applicationUser.eventBus, eventBus: (state) => state.applicationUser.eventBus,
damage: (state) => state.order.damage, damage: (state) => state.order.damage,
lineItems: (state) => state.order.lineItems, lineItems: (state) => state.order.lineItems,
referralNumber: (state) => state.order.referralNumber,
referralDate: (state) => state.order.referralDate,
referralCorrelationId: (state) => state.order.referralCorrelationId,
pageData: (state) => (page) => { pageData: (state) => (page) => {
return state.applicationUser.pageData[page]; return state.applicationUser.pageData[page];
} }
@ -321,9 +318,6 @@ export const actions = {
context.commit(storeMutations.UPDATE_REFERRAL_DATE, referralDate); context.commit(storeMutations.UPDATE_REFERRAL_DATE, referralDate);
context.commit(storeMutations.UPDATE_REFERRAL_CORRELATION_ID, correlationId); context.commit(storeMutations.UPDATE_REFERRAL_CORRELATION_ID, correlationId);
}, },
setLoadOrderData(context, { loadOrderData }) {
},
// Parts API Actions // Parts API Actions
getPartsOrQuestions(context, { carId, glassArray, zipCode, vin = '' }) { getPartsOrQuestions(context, { carId, glassArray, zipCode, vin = '' }) {
@ -357,8 +351,8 @@ export const actions = {
}, },
numberOfChips: damage.numberOfChips, numberOfChips: damage.numberOfChips,
glassToReplace: damage.glassToReplace, glassToReplace: damage.glassToReplace,
referralNumber: context.getters.referralNumber, referralNumber: context.state.order.referralNumber,
referralDate: context.getters.referralDate referralDate: context.state.order.referralDate
}, },
}); });
}, },
@ -372,6 +366,9 @@ export const actions = {
referralDate: referralDate, referralDate: referralDate,
correlationId: correlationId correlationId: correlationId
}, },
}).then( (response) => {
context.commit(storeMutations.SET_LOAD_ORDER_INFO, response.data);
return response;
}); });
} }
} }