diff --git a/src/helpers/debug-log-helper.js b/src/helpers/debug-log-helper.js new file mode 100644 index 000000000..ea0ac3337 --- /dev/null +++ b/src/helpers/debug-log-helper.js @@ -0,0 +1,23 @@ +import store from "@/store"; +import { getQuerystringParameter } from "@/helpers/querystring-helper"; +import { queryStrings } from "@/constants/query-strings"; +import { storeActions } from "@/constants/store-actions"; + +export function debugLog(message, data, forceLog = false) { + checkLogParam(); + + if (store?.getters?.applicationUser?.loggingOption || forceLog) { + data = data ?? ""; + const outData = typeof data === "object" ? JSON.stringify(data) : data; + + console.log(`${new Date()} ${message} ${outData}`); + } +} + +export function checkLogParam() { + const logQueryString = getQuerystringParameter(queryStrings.LOG); + + if (logQueryString) { + store?.dispatch(storeActions?.SAVE_LOGGING_OPTION, logQueryString); + } +} diff --git a/src/helpers/heritage-integration/navigation-helper.js b/src/helpers/heritage-integration/navigation-helper.js index ca547b980..90f9593b9 100644 --- a/src/helpers/heritage-integration/navigation-helper.js +++ b/src/helpers/heritage-integration/navigation-helper.js @@ -8,18 +8,16 @@ import { includesWindshieldReplacement } from "@/helpers/damage-helper"; import { applicationConfig } from "@/constants/application-config.js"; import store from "@/store"; import router from "@/router"; +import { debugLog } from "@/helpers/debug-log-helper"; /* Used to navigate to the heritage funnel with the correct query string and url. */ export async function navigateToHeritageFunnel({ shouldSaveSession, pageNameToLog, navType }) { - const log = getQuerystringParameter(queryStrings.LOG); - if (log === "true") { - console.log("------------- Navigate to heritage start -----------------"); - console.log(new Date() + " applicationConfig: " + JSON.stringify(applicationConfig)); - console.log(new Date() + " navigateToHeritageFunnel: " + applicationConfig.HERITAGE_FUNNEL); - console.log("------------- Navigate to heritage end -----------------"); - } + debugLog("--- Navigate to heritage start ---"); + debugLog("applicationConfig:", applicationConfig); + debugLog("navigateToHeritageFunnel:", applicationConfig.HERITAGE_FUNNEL); + debugLog("--- Navigate to heritage end ---"); // Create the order (or save existing order) when navigating to Heritage Funnel. if (shouldSaveSession) { diff --git a/src/layouts/payment-method/payment-method.vue b/src/layouts/payment-method/payment-method.vue index e2debfe4a..e0de7fc0f 100644 --- a/src/layouts/payment-method/payment-method.vue +++ b/src/layouts/payment-method/payment-method.vue @@ -168,6 +168,7 @@ import { getSalesTax, } from "@/helpers/pricing-helper.js"; import { consumeQueryFromStash } from "@/router/methods/helpers/querystring-stash"; +import { debugLog } from "@/helpers/debug-log-helper"; defineRule("payment-method-required", required(errorMessages.OPTION_REQUIRED)); defineRule("recal-ack-required", required(errorMessages.RECAL_ACK_REQUIRED)); @@ -440,26 +441,25 @@ export default { // prettier-ignore { - const log = getQuerystringParameter(queryStrings.LOG); - const logAsBool = getBoolFromString(log); - if (logAsBool || !preReqResult) { - console.log("------------- payment-method.vue pagePrereqs start -----------------"); - console.log(new Date() + " serviceLocationReqs::isMobile: " + isMobile); - console.log(new Date() + " serviceLocationReqs::mobileReqs: " + mobileReqs); - console.log(new Date() + " serviceLocationReqs::dropOffInshopReqs: " + dropOffInshopReqs); - console.log(new Date() + " serviceLocationReqs:: result " + serviceLocationReqs); - console.log(new Date() + " isInsuranceSet:: " + isInsuranceSet()); - console.log(new Date() + " scheduleReqs::schedule.date:" + schedule.date); - console.log(new Date() + " scheduleReqs::schedule.startTime:" + schedule.startTime); - console.log(new Date() + " scheduleReqs::schedule.endTime:" + schedule.endTime); - console.log(new Date() + " scheduleReqs::schedule.jobMaxMinutes:" + schedule.jobMaxMinutes); - console.log(new Date() + " scheduleReqs::schedule.jobMinMinutes:" + schedule.jobMinMinutes); - console.log(new Date() + " customerReqs::customer.firstName:" + customer.firstName); - console.log(new Date() + " customerReqs::customer.lastName:" + customer.lastName); - console.log(new Date() + " customerReqs::customer.phoneNumber:" + customer.phoneNumber); - console.log(new Date() + " customerReqs::customer.emailAddress:" + customer.emailAddress); - console.log("------------- payment-method.vue pagePrereqs end -----------------"); - } + debugLog("--- payment-method.vue pagePrereqs start ---", null, !preReqResult); + debugLog("serviceLocationRequs::isMobile:", isMobile, !preReqResult); + debugLog("serviceLocationReqs::mobileReqs:", mobileReqs, !preReqResult); + debugLog("serviceLocationReqs::dropOffInshopReqs:", dropOffInshopReqs, !preReqResult); + debugLog("serviceLocationReqs:: result", serviceLocationReqs, !preReqResult); + + debugLog("isInsuranceSet::", isInsuranceSet(), !preReqResult); + + debugLog("scheduleReqs::schedule.date:", schedule.date, !preReqResult); + debugLog("scheduleReqs::schedule.startTime:", schedule.startTime, !preReqResult); + debugLog("scheduleReqs::schedule.endTime:", schedule.endTime, !preReqResult); + debugLog("scheduleReqs::schedule.jobMaxMinutes:", schedule.jobMaxMinutes, !preReqResult); + debugLog("scheduleReqs::schedule.jobMinMinutes:", schedule.jobMinMinutes, !preReqResult); + + debugLog("customerReqs::customer.firstName:", customer.firstName, !preReqResult); + debugLog("customerReqs::customer.lastName:", customer.lastName, !preReqResult); + debugLog("customerReqs::customer.phoneNumber:", customer.phoneNumber, !preReqResult); + debugLog("customerReqs::customer.emailAddress:", customer.emailAddress, !preReqResult); + debugLog("--- payment-method.vue pagePrereqs end ---", null, !preReqResult); } return preReqResult; diff --git a/src/layouts/payment/payment.vue b/src/layouts/payment/payment.vue index 40d772dbb..745d5ebe1 100644 --- a/src/layouts/payment/payment.vue +++ b/src/layouts/payment/payment.vue @@ -238,6 +238,7 @@ import { getSubTotal, getSalesTax, } from "@/helpers/pricing-helper.js"; +import { debugLog } from "@/helpers/debug-log-helper.js"; export default { name: "payment", @@ -545,41 +546,50 @@ export default { // prettier-ignore { - if (store.getters.applicationUser.loggingOption || !preReqResult) { - console.log("------------- payment.vue pagePrereqs start -----------------"); - console.log(new Date() + "mobileReqs:" + mobileReqs); - console.log(new Date() + "serviceLocation.address:" + serviceLocation.address); - console.log(new Date() + "serviceLocation.city:" + serviceLocation.city); - console.log(new Date() + "serviceLocation.state:" + serviceLocation.state); - console.log(new Date() + "serviceLocation.zipCode:" + serviceLocation.zipCode); - console.log(""); - console.log(new Date() + "dropOffInshopReqs:" + dropOffInshopReqs); - console.log(new Date() + "serviceLocationReqs:" + serviceLocationReqs); - console.log(new Date() + "providerLocation.streetAddress:" + providerLocation.streetAddress); - console.log(new Date() + "providerLocation.city:" + providerLocation.city); - console.log(new Date() + "providerLocation.state:" + providerLocation.state); - console.log(new Date() + "providerLocation.zipCode:" + providerLocation.zipCode); - console.log(""); - console.log(new Date() + "isInsuranceSet:" + isInsuranceSet); - console.log(""); - console.log(new Date() + "scheduleReqs:" + scheduleReqs); - console.log(new Date() + "schedule.date:" + schedule.date); - console.log(new Date() + "schedule.startTime:" + schedule.startTime); - console.log(new Date() + "schedule.endTime:" + schedule.endTime); - console.log(new Date() + "schedule.jobMaxMinutes:" + schedule.jobMaxMinutes); - console.log(new Date() + "schedule.jobMinMinutes:" + schedule.jobMinMinutes); - console.log(""); - console.log(new Date() + "customerReqs:" + customerReqs); - console.log(new Date() + "customer.firstName:" + customer.firstName); - console.log(new Date() + "customer.lastName:" + customer.lastName); - console.log(new Date() + "customer.phoneNumber:" + customer.phoneNumber); - console.log(new Date() + "customer.emailAddress:" + customer.emailAddress); - console.log(""); - console.log(new Date() + "paymentMethodReqs:" + paymentMethodReqs); - console.log(new Date() + "store.getters.order.payment.isPia:" + store.getters.order.payment.isPia); - console.log(new Date() + "store.getters.order.payment.piaType:" + store.getters.order.payment.piaType); - console.log("------------- payment.vue pagePrereqs end -------------------"); - } + debugLog("--- payment.vue pagePrereqs start ---", null, !preReqResult); + debugLog("mobileReqs:", mobileReqs, !preReqResult); + debugLog("serviceLocation.address:", serviceLocation.address, !preReqResult); + debugLog("serviceLocation.city:", serviceLocation.city, !preReqResult); + debugLog("serviceLocation.state:", serviceLocation.state, !preReqResult); + debugLog("serviceLocation.zipCode:", serviceLocation.zipCode, !preReqResult); + + debugLog("", null, !preReqResult); + + debugLog("dropOffInshopReqs:", dropOffInshopReqs, !preReqResult); + debugLog("serviceLocationReqs:", serviceLocationReqs, !preReqResult); + debugLog("providerLocation.streetAddress:", providerLocation.streetAddress, !preReqResult); + debugLog("providerLocation.city:", providerLocation.city, !preReqResult); + debugLog("providerLocation.state:", providerLocation.state, !preReqResult); + debugLog("providerLocation.zipCode:", providerLocation.zipCode, !preReqResult); + + debugLog("", null, !preReqResult); + + debugLog("isInsuranceSet:", isInsuranceSet, !preReqResult); + + debugLog("", null, !preReqResult); + + debugLog("scheduleReqs:", scheduleReqs, !preReqResult); + debugLog("schedule.date:", schedule.date, !preReqResult); + debugLog("schedule.startTime:", schedule.startTime, !preReqResult); + debugLog("schedule.endTime:", schedule.endTime, !preReqResult); + debugLog("schedule.jobMaxMinutes:", schedule.jobMaxMinutes, !preReqResult); + debugLog("schedule.jobMinMinutes:", schedule.jobMinMinutes, !preReqResult); + + debugLog("", null, !preReqResult); + + debugLog("customerReqs:", customerReqs, !preReqResult); + debugLog("customer.firstName:", customer.firstName, !preReqResult); + debugLog("customer.lastName:", customer.lastName, !preReqResult); + debugLog("customer.phoneNumber:", customer.phoneNumber, !preReqResult); + debugLog("customer.emailAddress:", customer.emailAddress, !preReqResult); + + debugLog("", null, !preReqResult); + + debugLog("paymentMethodReqs:", paymentMethodReqs, !preReqResult); + debugLog("store.getters.order.payment.isPia:", store.getters.order?.payment?.isPia, !preReqResult); + debugLog("store.getters.order.payment.piaType:", store.getters.order?.payment?.piaType, !preReqResult); + + debugLog("--- payment.vue pagePrereqs end ---", null, !preReqResult); } return preReqResult; diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue index e15e8b8c3..21df2a59a 100644 --- a/src/layouts/quote/quote.vue +++ b/src/layouts/quote/quote.vue @@ -170,6 +170,7 @@ import { showFmgLoadingModal } from "@/helpers/loading-modal-helper"; import { routeData } from "@/router/constants/routes"; import { consumeQueryFromStash } from "@/router/methods/helpers/querystring-stash"; import { storeMutations } from "@/constants/store-mutations"; +import { debugLog } from "@/helpers/debug-log-helper"; defineRule("option-required", required(errorMessages.OPTION_REQUIRED)); @@ -461,9 +462,7 @@ export default { baseMixin.methods.getTierOnePackagePrice(lineItemsNoDiscount); // prettier-ignore { - if (store.getters.applicationUser.loggingOption) { - console.log(new Date() + " quote tierOnePrice comparison: " + tierOnePrice + " > " + insuranceThreshold + "=" + (tierOnePrice > insuranceThreshold)); - } + debugLog("quote tierOnePrice comparison: " + tierOnePrice + " > " + insuranceThreshold + "=" + (tierOnePrice > insuranceThreshold)); } // compare base price vs arbitrary threshold (representing insurance price) @@ -484,21 +483,17 @@ export default { // prettier-ignore { - if (store.getters.applicationUser.loggingOption) { - console.log("------------- quote.vue thresholds start -----------------"); - console.log(new Date() + " isExternalParameter: " + isExternalParameter); - console.log(new Date() + " internalThreshold: " + internalThreshold); - console.log(new Date() + " externalThreshold: " + externalThreshold); - console.log("------------- quote.vue thresholds end -----------------"); - } + debugLog("--- quote.vue thresholds start ---"); + debugLog(" isExternalParameter: ", isExternalParameter); + debugLog(" internalThreshold: ", internalThreshold); + debugLog(" externalThreshold: ", externalThreshold); + debugLog("--- quote.vue thresholds end ---"); } if (isExternalParameter === externalParameterStatus.NOT_SET) { // prettier-ignore { - if (store.getters.applicationUser.loggingOption) { - console.log(new Date() + "quote.vue tab select EXTERNAL not set"); - } + debugLog("quote.vue tab select EXTERNAL not set"); } // there are no active or inactive external parameters; use internal threshold if (internalThreshold) thresholdToUse = internalThreshold; @@ -513,9 +508,7 @@ export default { if (getBoolFromString(store.getters.externalParameterQuote?.isInsurance)) { // prettier-ignore { - if (store.getters.applicationUser.loggingOption) { - console.log(new Date() + "quote.vue tab select EXTERNAL ISINSURANCE"); - } + debugLog("quote.vue tab select EXTERNAL ISINSURANCE"); } const insuranceSelection = true; @@ -534,9 +527,7 @@ export default { // prettier-ignore { - if (store.getters.applicationUser.loggingOption) { - console.log(new Date() + "quote.vue tab select NOT EXTERNAL"); - } + debugLog("quote.vue tab select NOT EXTERNAL"); } vm.isInsuranceSelected = getIsInsuranceSelectedValue( @@ -652,16 +643,13 @@ export default { // prettier-ignore { - const log = getQuerystringParameter(queryStrings.LOG); - if (log === "true" || !preReqResult) { - console.log("------------- quote.vue pagePrereqs start -----------------"); - console.log(new Date() + " store.getters.order.serviceLocation.zipCode: " + store.getters.order.serviceLocation?.zipCode); - console.log(new Date() +" store.getters.order.serviceLocation.zipCodeCtu: " + store.getters.order.serviceLocation?.zipCodeCtu); - console.log(new Date() + " store.getters.order.damage.isRepair: " + store.getters.order.damage?.isRepair); - console.log(new Date() + " store.getters.order.lineItems?.glassParts: " + JSON.stringify(store.getters.order.lineItems?.glassParts)); - console.log(new Date() + " store.getters.order.payment.insuranceCoverage?.isVerified: " + payment?.insuranceCoverage?.isVerified); - console.log("------------- quote.vue pagePrereqs end -----------------"); - } + debugLog("--- quote.vue pagePrereqs start ---", null, !preReqResult); + debugLog("store.getters.order.serviceLocation.zipCode:", store.getters.order.serviceLocation?.zipCode, !preReqResult); + debugLog("store.getters.order.serviceLocation.zipCodeCtu:", store.getters.order.serviceLocation?.zipCodeCtu, !preReqResult); + debugLog("store.getters.order.damage.isRepair:", store.getters.order.damage?.isRepair, !preReqResult); + debugLog("store.getters.order.lineItems?.glassParts:", store.getters.order.lineItems?.glassParts, !preReqResult); + debugLog("store.getters.order.payemt.insuranceCoverage?.isVerified:", store.getters.order.payment?.insuranceCoverage?.isVerified, !preReqResult); + debugLog("--- quote.vue pagePrereqs end ---", null, !preReqResult); } return preReqResult; diff --git a/src/layouts/schedule/schedule.vue b/src/layouts/schedule/schedule.vue index b47de1fa8..b752a5d22 100644 --- a/src/layouts/schedule/schedule.vue +++ b/src/layouts/schedule/schedule.vue @@ -94,6 +94,7 @@ import { getAmountDue, getPricingByDayPartWithPrice } from "@/helpers/pricing-he import { getItemsWithoutRecalParts } from "@/helpers/recal-helper"; import { partNumberStrings } from "@/constants/part-number-strings"; import { deepClone } from "@/helpers/object-helper"; +import { debugLog } from "@/helpers/debug-log-helper"; // DEFINE VALIDATION RULES defineRule("date-required", required(errorMessages.DATE_REQUIRED)); @@ -428,18 +429,15 @@ export default { // prettier-ignore { - const log = getQuerystringParameter(queryStrings.LOG); - if (log === "true" || !preReqResult) { - console.log("------------- schedule.vue pagePrereqs start -----------------"); - console.log(new Date() + " store.getters.order.serviceLocation.zipCode: " + serviceLocation.zipCode); - console.log(new Date() + " store.getters.order.serviceLocation.zipCodeCtu: " + serviceLocation.zipCodeCtu); - console.log(new Date() + " store.getters.order.serviceLocation.appointmentType: " + serviceLocation.appointmentType); - console.log(new Date() + " store.getters.order.serviceLocation.provider.providerNumber: " + serviceLocation.provider.providerNumber); - console.log(new Date() + " store.getters.payment.isInsurance: " + store.getters.payment?.isInsurance); - console.log(new Date() + " store.getters.order.damage.isRepair: " + store.getters.order.damage.isRepair); - console.log(new Date() + " store.getters.order.lineItems.glassParts: " + JSON.stringify(store.getters.order.lineItems?.glassParts)); - console.log("------------- schedule.vue pagePrereqs end -------------------"); - } + debugLog("--- schedule.vue pagePrereqs start ---", null, !preReqResult); + debugLog("store.getters.order.serviceLocation.zipCode:", serviceLocation.zipCode, !preReqResult); + debugLog("store.getters.order.serviceLocation.zipCodeCtu:", serviceLocation.zipCodeCtu, !preReqResult); + debugLog("store.getters.order.serviceLocation.appointmentType:", serviceLocation.appointmentType, !preReqResult); + debugLog("store.getters.order.serviceLocation.provider.providerNumber:", serviceLocation.provider?.providerNumber, !preReqResult); + debugLog("store.getters.payment.isInsurance:", store.getters.payment?.isInsurance, !preReqResult); + debugLog("store.getters.order.damage.isRepair:", store.getters.order.damage?.isRepair, !preReqResult); + debugLog("store.getters.order.lineItems.glassParts:", store.getters.order.lineItems?.glassParts, !preReqResult); + debugLog("--- schedule.vue pagePrereqs end ---", null, !preReqResult); } return preReqResult; }, diff --git a/src/layouts/vehicle/vehicle.vue b/src/layouts/vehicle/vehicle.vue index 174c76530..131073f90 100644 --- a/src/layouts/vehicle/vehicle.vue +++ b/src/layouts/vehicle/vehicle.vue @@ -114,6 +114,7 @@ import { consumeQueryFromStash, peekQueryFromStash, } from "@/router/methods/helpers/querystring-stash"; +import { debugLog } from "@/helpers/debug-log-helper"; //define validation rules defineRule("year-required", required(errorMessages.YEAR_REQUIRED)); @@ -148,15 +149,10 @@ export default { }, async beforeRouteEnter(to, from, next) { - if (store.getters.applicationUser.loggingOption) { - console.log( - new Date() + "------------- vehicle.vue applicationConfig start -------------" - ); - console.log(new Date() + JSON.stringify(applicationConfig)); - console.log( - new Date() + "------------- vehicle.vue applicationConfig end -------------" - ); - } + debugLog("------------- vehicle.vue applicationConfig start -------------"); + debugLog("", applicationConfig); + debugLog("------------- vehicle.vue applicationConfig end -------------"); + // Call APIs const cmsContentPromise = fetchCmsContentForPage(to.name); const experimentForLogging = store.getters.applicationUser.experiments.find( diff --git a/src/mixins/base-mixin.js b/src/mixins/base-mixin.js index 3dfca7dbf..ecce2632d 100644 --- a/src/mixins/base-mixin.js +++ b/src/mixins/base-mixin.js @@ -9,6 +9,7 @@ import { dynamicStrings } from "@/constants/dynamic-strings"; import { partTypeStrings } from "../constants/part-type-strings"; import { showFmgLoadingModal } from "@/helpers/loading-modal-helper"; import { getItemsWithoutRecalParts } from "@/helpers/recal-helper"; +import { debugLog } from "@/helpers/debug-log-helper"; export default { data() { @@ -95,10 +96,8 @@ export default { let totalPrice = this.getTotalPriceOfAllLineItemsAndChildParts(lineItemsToPrice, false); // prettier-ignore { - if (store.getters.applicationUser.loggingOption) { - console.log(new Date() + " base-mixin getTierOnePackagePrice lineItemsToPrice: " + JSON.stringify(lineItemsToPrice)); - console.log(new Date() + " base-mixin getTierOnePackagePrice totalPrice: " + totalPrice); - } + debugLog("base-mixin getTierOnePackagePrice lineItemsToPrice:", lineItemsToPrice); + debugLog("base-mixin getTierOnePackagePrice totalPrice:", totalPrice); } return totalPrice; }, diff --git a/src/router/methods/before-each.js b/src/router/methods/before-each.js index dae53b583..aa4e3a9e4 100644 --- a/src/router/methods/before-each.js +++ b/src/router/methods/before-each.js @@ -13,6 +13,7 @@ import { runExperiments } from "@/router/methods/helpers/run-experiments"; import { bailout } from "@/router/methods/error"; import { checkPagePrerequisites } from "@/router/methods/page-prerequisites"; +import { checkLogParam } from "@/helpers/debug-log-helper"; export async function beforeEach(to, from) { try { @@ -53,6 +54,9 @@ export async function beforeEach(to, from) { await loadSessionIfPresent(true, routeData.SERVICE_LOCATION.name); } + // Update if logging is enabled. + checkLogParam(); + // Ensure page-prerequisites are fulfilled const arePagePrerequisitesValid = await checkPagePrerequisites(to.name);