From ff8be8e0dca5560428bcce6ce754eed8fa32c8b6 Mon Sep 17 00:00:00 2001 From: Jeremy Zimmerman Date: Tue, 28 Feb 2023 15:14:03 -0500 Subject: [PATCH 1/6] Updates --- src/layouts/entry-page/entry-page.vue | 50 ++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/src/layouts/entry-page/entry-page.vue b/src/layouts/entry-page/entry-page.vue index ba8237d5..11d51a7b 100644 --- a/src/layouts/entry-page/entry-page.vue +++ b/src/layouts/entry-page/entry-page.vue @@ -34,7 +34,14 @@ }, async validateClientTagOnEntry() { - const clientTag = this.$route.query.ClientTag; + // Dump the query string parameters into an array. Remove casing on the key for easy compare. + let queryStringParams = []; + for ( let param in this.$route.query) + { + queryStringParams[param.toLowerCase()] = this.$route.query[param]; + } + + const clientTag = queryStringParams["clienttag"]; const clientTagPresent = !!clientTag; let authorized = false; @@ -48,6 +55,29 @@ this.mainStore.issConfig.accountNumber = resp.data.accountNumber; this.mainStore.issConfig.styleSheet = resp.data.styleSheet; authorized = true; + + if ( resp.data.parameters?.length > 0 ) + { + const clientParams = JSON.parse(resp.data.parameters); + + let finalParams = []; + for ( let cparam in clientParams) + { + let cname = cparam.toLowerCase(); + + for ( let qsparam in queryStringParams) + { + let qsname = qsparam.toLowerCase(); + + if ( cname === qsname ) + { + finalParams[cname] = queryStringParams[cname]; + } + } + } + + //this.populateStoreItemsFromParams(finalParams); + } } } @@ -59,6 +89,24 @@ window.location = "/?issPage=" + issPageValues.WELCOME_PAGE; } }, + populateStoreItemsFromParams(params) { + + const mainStore = useMainStore(); + + // Populate store items from parameters. + for ( let param in params) + { + let name = param.toLowerCase(); + let value = params[param]; + + switch (name) + { + case "policynumber": + mainStore.order.policy.policyNumber = value; + break; + } + } + }, }, computed:{ }, From 56bed721b11694a7a3aae1c6d0ad0adbc1b90586 Mon Sep 17 00:00:00 2001 From: Jeremy Zimmerman Date: Wed, 1 Mar 2023 15:43:40 -0500 Subject: [PATCH 2/6] Updates. --- src/layouts/entry-page/entry-page.vue | 41 +++++++++++++++++++++++---- src/store/index.js | 4 +++ 2 files changed, 39 insertions(+), 6 deletions(-) diff --git a/src/layouts/entry-page/entry-page.vue b/src/layouts/entry-page/entry-page.vue index 11d51a7b..ddfb6862 100644 --- a/src/layouts/entry-page/entry-page.vue +++ b/src/layouts/entry-page/entry-page.vue @@ -51,9 +51,8 @@ if ( resp?.data.active && resp?.data.accountName.length > 0 ) { - this.mainStore.issConfig.clientName = resp.data.accountName; - this.mainStore.issConfig.accountNumber = resp.data.accountNumber; - this.mainStore.issConfig.styleSheet = resp.data.styleSheet; + this.populateISSConfigValues(resp.data); + authorized = true; if ( resp.data.parameters?.length > 0 ) @@ -89,9 +88,39 @@ window.location = "/?issPage=" + issPageValues.WELCOME_PAGE; } }, - populateStoreItemsFromParams(params) { + populateISSConfigValues(data) + { + this.mainStore.issConfig.clientName = data.accountName; + this.mainStore.issConfig.accountNumber = data.accountNumber; + this.mainStore.issConfig.styleSheet = data.styleSheet; - const mainStore = useMainStore(); + console.log(data.clientFlags); + console.log(data.parameters); + + try + { + const clientFlags = JSON.parse(data.clientFlags); + + console.log(clientFlags.clientDisplayName); + + if ( clientFlags.TPAEnabled ) + { + console.log("TPA Flow Enabled!"); + this.mainStore.issConfig.enableTPAFlow = true; + } + + if ( clientFlags.clientDisplayName != null ) + { + console.log("Client Display Name set!"); + this.mainStore.issConfig.clientDisplayName = clientflags.clientDisplayName; + } + } + catch ( e ) + { + console.error("Error parsing client flags: " + e); + } + }, + populateStoreItemsFromParams(params) { // Populate store items from parameters. for ( let param in params) @@ -102,7 +131,7 @@ switch (name) { case "policynumber": - mainStore.order.policy.policyNumber = value; + this.mainStore.order.policy.policyNumber = value; break; } } diff --git a/src/store/index.js b/src/store/index.js index 19aff5c1..de09569f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -99,8 +99,10 @@ const getDefaultState = () => { }, issConfig: { clientName: "", + clientDisplayName: "", styleSheet: "", accountNumber: 0, + enableTPAFlow: false, } }; }; @@ -587,8 +589,10 @@ export const useMainStore = defineStore({ resetISSConfigState() { this.issConfig.clientName = ""; + this.issConfig.clientDisplayName = ""; this.issConfig.accountNumber = 0; this.issConfig.styleSheet = ""; + this.issConfig.enableTPAFlow = false; }, updateVehicleYear(year) { From e462b23af5d15077f3544196152b41974c15537b Mon Sep 17 00:00:00 2001 From: Jeremy Zimmerman Date: Fri, 3 Mar 2023 15:43:06 -0500 Subject: [PATCH 3/6] Auto stash before merge of "feature/Digital/SSR-275" and "develop" --- src/layouts/entry-page/entry-page.vue | 33 ++++++++++++++++++++------- src/router/index.js | 33 +++++++++++++++++---------- 2 files changed, 46 insertions(+), 20 deletions(-) diff --git a/src/layouts/entry-page/entry-page.vue b/src/layouts/entry-page/entry-page.vue index ddfb6862..ba26817b 100644 --- a/src/layouts/entry-page/entry-page.vue +++ b/src/layouts/entry-page/entry-page.vue @@ -59,10 +59,12 @@ { const clientParams = JSON.parse(resp.data.parameters); + console.log(clientParams); + let finalParams = []; for ( let cparam in clientParams) { - let cname = cparam.toLowerCase(); + let cname = clientParams[cparam].toLowerCase(); for ( let qsparam in queryStringParams) { @@ -74,8 +76,8 @@ } } } - - //this.populateStoreItemsFromParams(finalParams); + + this.populateStoreItemsFromParams(finalParams); } } } @@ -94,15 +96,10 @@ this.mainStore.issConfig.accountNumber = data.accountNumber; this.mainStore.issConfig.styleSheet = data.styleSheet; - console.log(data.clientFlags); - console.log(data.parameters); - try { const clientFlags = JSON.parse(data.clientFlags); - console.log(clientFlags.clientDisplayName); - if ( clientFlags.TPAEnabled ) { console.log("TPA Flow Enabled!"); @@ -122,9 +119,14 @@ }, populateStoreItemsFromParams(params) { + console.log("populate is running"); + // Populate store items from parameters. for ( let param in params) { + // ["PolicyNumber","LossDate","Timestamp","Token","Signature","ReturnURL","ReturnURL2"] + //console.log("param: " + params[param]) + let name = param.toLowerCase(); let value = params[param]; @@ -133,6 +135,21 @@ case "policynumber": this.mainStore.order.policy.policyNumber = value; break; + + case "lossdate": + this.mainStore.order.policy.dateOfLoss = value; + break; + + // Not implemented yet. + case "returnurl": + case "returnurl2": + break; + + // Not stored + case "timestamp": + case "token": + case "signature": + break; } } }, diff --git a/src/router/index.js b/src/router/index.js index ca0dcee3..8880066f 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -23,15 +23,19 @@ const routes = [ async beforeEnter(to, from, next) { try { to.query.issPage = !to.query.issPage ? issPageValues.WELCOME_PAGE : to.query.issPage; - - if (analyticsMixin.methods.noSession()) { - await analyticsMixin.methods.initSession(); - } else { - updateSessionIdCookie(); + + // Do not run these for the main entry page - as it is not part of the user flow. + if ( to.query.issPage != issPageValues.ENTRY_PAGE ) + { + if (analyticsMixin.methods.noSession()) { + await analyticsMixin.methods.initSession(); + } else { + updateSessionIdCookie(); + } + + await runExperiments(to.query.issPage); } - - await runExperiments(to.query.issPage); - + // Process ISS cookie. updateOrCreateISSCookie(); @@ -78,11 +82,16 @@ router.afterEach((to, from) => { // Update lastPageVisited in the store store.updateLastPageVisited(to.name); - // Push page view to GA - analyticsMixin.methods.pushPageViewToGA(); + console.log("Page: " + to.query.issPage); - // Push experiments to Data Layer - analyticsMixin.methods.pushExperimentsToDataLayer(); + if ( to.query.issPage != issPageValues.ENTRY_PAGE ) + { + // Push page view to GA + analyticsMixin.methods.pushPageViewToGA(); + + // Push experiments to Data Layer + analyticsMixin.methods.pushExperimentsToDataLayer(); + } }); // Get route information by page name. From 4c24fdd6ffa910c763db96d93dde54ad0653862e Mon Sep 17 00:00:00 2001 From: Jeremy Zimmerman Date: Tue, 7 Mar 2023 12:49:03 -0500 Subject: [PATCH 4/6] Updates. --- src/layouts/entry-page/entry-page.vue | 68 ++++++++++++++++----------- src/store/index.js | 10 ++-- 2 files changed, 47 insertions(+), 31 deletions(-) diff --git a/src/layouts/entry-page/entry-page.vue b/src/layouts/entry-page/entry-page.vue index ba26817b..d7c04e34 100644 --- a/src/layouts/entry-page/entry-page.vue +++ b/src/layouts/entry-page/entry-page.vue @@ -57,28 +57,9 @@ if ( resp.data.parameters?.length > 0 ) { - const clientParams = JSON.parse(resp.data.parameters); - - console.log(clientParams); - - let finalParams = []; - for ( let cparam in clientParams) - { - let cname = clientParams[cparam].toLowerCase(); - - for ( let qsparam in queryStringParams) - { - let qsname = qsparam.toLowerCase(); - - if ( cname === qsname ) - { - finalParams[cname] = queryStringParams[cname]; - } - } - } - + const finalParams = this.combineClientParameters(resp.data.parameters, queryStringParams); this.populateStoreItemsFromParams(finalParams); - } + } } } @@ -109,7 +90,7 @@ if ( clientFlags.clientDisplayName != null ) { console.log("Client Display Name set!"); - this.mainStore.issConfig.clientDisplayName = clientflags.clientDisplayName; + this.mainStore.issConfig.clientDisplayName = clientFlags.clientDisplayName; } } catch ( e ) @@ -117,6 +98,37 @@ console.error("Error parsing client flags: " + e); } }, + combineClientParameters(configParams, queryStringParams) + { + let finalParams = []; + + try + { + const clientParams = JSON.parse(configParams); + console.log(clientParams); + + for ( let cparam in clientParams) + { + let cname = clientParams[cparam].toLowerCase(); + + for ( let qsparam in queryStringParams) + { + let qsname = qsparam.toLowerCase(); + + if ( cname === qsname ) + { + finalParams[cname] = queryStringParams[cname]; + } + } + } + } + catch ( e ) + { + console.error("Error combining client parameters: " + e); + } + + return finalParams; + }, populateStoreItemsFromParams(params) { console.log("populate is running"); @@ -124,9 +136,6 @@ // Populate store items from parameters. for ( let param in params) { - // ["PolicyNumber","LossDate","Timestamp","Token","Signature","ReturnURL","ReturnURL2"] - //console.log("param: " + params[param]) - let name = param.toLowerCase(); let value = params[param]; @@ -139,16 +148,19 @@ case "lossdate": this.mainStore.order.policy.dateOfLoss = value; break; - - // Not implemented yet. + case "returnurl": + this.mainStore.iisConfig.returnURL = value; + break; + case "returnurl2": + this.mainStore.iisConfig.returnURL2 = value; break; // Not stored case "timestamp": case "token": - case "signature": + case "signature": break; } } diff --git a/src/store/index.js b/src/store/index.js index 3604e55b..711d736f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -99,10 +99,12 @@ const getDefaultState = () => { }, issConfig: { clientName: "Generic Insurance", // this is the default and will be overriden by the client's name - clientDisplayName: "", + clientDisplayName: "Generic Insurance", styleSheet: "", accountNumber: 0, enableTPAFlow: false, + returnURL: null, + returnURL2: null, } }; }; @@ -603,11 +605,13 @@ export const useMainStore = defineStore({ resetISSConfigState() { - this.issConfig.clientName = ""; - this.issConfig.clientDisplayName = ""; + this.issConfig.clientName = "Generic Insurance"; + this.issConfig.clientDisplayName = "Generic Insurance"; this.issConfig.accountNumber = 0; this.issConfig.styleSheet = ""; this.issConfig.enableTPAFlow = false; + this.issConfig.returnURL = null; + this.issConfig.returnURL2 = null; }, updateVehicleYear(year) { From 34dbc824773d7d968fbce6a96d6f9d70735995c9 Mon Sep 17 00:00:00 2001 From: Jeremy Zimmerman Date: Tue, 7 Mar 2023 13:46:56 -0500 Subject: [PATCH 5/6] Updates. --- src/layouts/entry-page/entry-page.vue | 5 ----- src/router/index.js | 2 -- 2 files changed, 7 deletions(-) diff --git a/src/layouts/entry-page/entry-page.vue b/src/layouts/entry-page/entry-page.vue index d7c04e34..859eb20a 100644 --- a/src/layouts/entry-page/entry-page.vue +++ b/src/layouts/entry-page/entry-page.vue @@ -83,13 +83,11 @@ if ( clientFlags.TPAEnabled ) { - console.log("TPA Flow Enabled!"); this.mainStore.issConfig.enableTPAFlow = true; } if ( clientFlags.clientDisplayName != null ) { - console.log("Client Display Name set!"); this.mainStore.issConfig.clientDisplayName = clientFlags.clientDisplayName; } } @@ -105,7 +103,6 @@ try { const clientParams = JSON.parse(configParams); - console.log(clientParams); for ( let cparam in clientParams) { @@ -131,8 +128,6 @@ }, populateStoreItemsFromParams(params) { - console.log("populate is running"); - // Populate store items from parameters. for ( let param in params) { diff --git a/src/router/index.js b/src/router/index.js index 8880066f..bc8579c6 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -82,8 +82,6 @@ router.afterEach((to, from) => { // Update lastPageVisited in the store store.updateLastPageVisited(to.name); - console.log("Page: " + to.query.issPage); - if ( to.query.issPage != issPageValues.ENTRY_PAGE ) { // Push page view to GA From 87eb9224130a4e45d06becd382faa8277d062d85 Mon Sep 17 00:00:00 2001 From: Jeremy Zimmerman Date: Wed, 8 Mar 2023 13:16:53 -0500 Subject: [PATCH 6/6] Updates. --- src/layouts/entry-page/entry-page.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/src/layouts/entry-page/entry-page.vue b/src/layouts/entry-page/entry-page.vue index 859eb20a..50493570 100644 --- a/src/layouts/entry-page/entry-page.vue +++ b/src/layouts/entry-page/entry-page.vue @@ -141,6 +141,7 @@ break; case "lossdate": + // NOTE: May need some date parsing logic in here depending on client. this.mainStore.order.policy.dateOfLoss = value; break;