From 15a21d1410811e3dd2597cf9798e0bc1c25a7db8 Mon Sep 17 00:00:00 2001 From: Johan Gunawan Date: Tue, 7 May 2024 10:20:22 -0400 Subject: [PATCH] SSR-1217. Referral number from email and global store are not matched. (#686) --- src/router/index.js | 22 ++-- src/store/index.js | 249 ++++++++++++++++++++++---------------------- 2 files changed, 138 insertions(+), 133 deletions(-) diff --git a/src/router/index.js b/src/router/index.js index 96a905b9..25a72e96 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -170,16 +170,18 @@ router.afterEach(async (to, from) => { store.clearSaveSessionPromise(); } - const saveSessionSynchronous = !!from.params[routerParams.SAVE_SESSION_SYNCHRONOUS]; - await saveSession({ shouldAwaitSaveSessionQueue: saveSessionSynchronous }).catch((error) => { - if (from.name === issPageValues.WELCOME_PAGE) { - store.setBailout(bailoutMessage.saveSessionError(error.data)); - router.navigate( - navigationScenarios.SAVE_SESSION_FAILED, - { query: { issPage: issPageValues.WELCOME_PAGE } } - ); - } - }); + if (to.query.issPage !== issPageValues.ORDER_CONFIRMATION) { + const saveSessionSynchronous = !!from.params[routerParams.SAVE_SESSION_SYNCHRONOUS]; + await saveSession({ shouldAwaitSaveSessionQueue: saveSessionSynchronous }).catch((error) => { + if (from.name === issPageValues.WELCOME_PAGE) { + store.setBailout(bailoutMessage.saveSessionError(error.data)); + router.navigate( + navigationScenarios.SAVE_SESSION_FAILED, + { query: { issPage: issPageValues.WELCOME_PAGE } } + ); + } + }); + } if (to.query.issPage !== issPageValues.ENTRY_PAGE) { // Push page view to GA diff --git a/src/store/index.js b/src/store/index.js index 391e4f85..869cdaca 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1212,133 +1212,136 @@ export const useMainStore = defineStore({ const loadedFromDupeCheck = !!(this.order.loadedFromDupeCheck && !this.order.loadedSessionClearedPreviousData); const newGlassToReplace = convertGlassPieceNamingForApi(damage.glassToReplace); + + const payload = { + applicationUser: { + crmCustomerId: this.applicationUser.crmCustomerId, + experiments: this.applicationUser.experiments, + lastPage: this.applicationUser.lastPageVisited, + pageData: this.applicationUser.pageData, + savedSessionId: this.applicationUser.savedSessionId + }, + vehicle: { + year: vehicle.year, + make: vehicle.make, + model: vehicle.model, + style: vehicle.style, + vin: vehicle.vin, + carId: vehicle.carId, + licensePlateNumber: vehicle.registration?.licensePlate + }, + damage: { + numberOfChips: damage.numberOfChips, + glassToReplace: newGlassToReplace, + isRepair: damage.isRepair, + partQuestionAnswers: damage.partQuestionAnswers, + moldingQuestionAnswers: damage.moldingQuestionAnswers, + capabilityQuestionAnswers: damage.capabilityQuestionAnswers, + dateOfLoss: policy.dateOfLoss, + damageCause: policy.damageCause, + damageState: policy.damageState, + damageCity: policy.damageCity, + isDamageGlassOnly: policy.isDamageGlassOnly + }, + policy: { + policyHolder: { + policyFirstName: customer.firstName, + policyLastName: customer.lastName, + policyPhoneNumber: contactInfo.servicePhone, + policyEmail: customer.emailAddress, + policyState: customer.address.state + }, + policyNumber: policy.policyNumber, + policyZipCode: policy.policyZipCode, + noCoverage: policy.noCoverage, + policyLookupSuccessful: policy.policyLookupSuccessful, + originalDeductible: this.order.originalDeductible, + currentDeductible: this.order.currentDeductible, + IsItac: this.order.policy.isITAC, + OemEndorsement: policy.endorsements?.indexOf('OEM Approved') !== -1 ?? false + }, + customer: { + address: { + streetAddress: customer.address?.streetAddress, + streetAddress2: customer.address?.streetAddress2, + city: customer.address?.city, + state: customer.address?.state, + zipCode: customer.address?.zipCode?.toString() + }, + emailAddress: contactInfo.emailAddress || customer.emailAddress, + firstName: contactInfo.firstName || customer.firstName, + lastName: contactInfo.lastName || customer.lastName, + homePhone: contactInfo.homePhone, + servicePhone: contactInfo.servicePhone, + alternativePhone: contactInfo.alternativePhone, + isSmsOptIn: contactInfo.requestTextUpdates ?? false + }, + lineItems: { + glassParts: lineItems.glassParts, + supportingItems: lineItems.supportingItems, + vaps: lineItems.vaps + }, + payment: { + InsuranceCoverage: { + isVerified: payment.insuranceCoverage?.isVerified ?? false, + coverageStatus: payment.insuranceCoverage?.coverageStatus, + claimNumber: payment.insuranceCoverage?.claimNumber + }, + parentAccountNumber: this.issConfig.parentAccountNumber, + paypalToken: payment.paypalToken, + isPaypal: payment.payInAdvanceType === paymentMethods.PAYPAL, + isCreditCard: payment.payInAdvanceType === paymentMethods.CREDIT_CARD, + isAfterpay: payment.payInAdvanceType === paymentMethods.AFTERPAY, + CCToken: payment.creditCardToken + }, + serviceLocation: { + address: { + streetAddress: serviceLocation.address, + city: serviceLocation.city, + state: serviceLocation.state, + zipCode: serviceLocation.zipCode, + zipCodeCtu: serviceLocation.zipCodeCtu + }, + appointmentType: (serviceLocation.appointmentType === AppointmentTypeStrings.MOBILE + || serviceLocation.appointmentType === AppointmentTypeStrings.MOBILE_NOT_ITAC_AND_NOT_NOCOMP) + ? AppointmentTypeStrings.MOBILE : serviceLocation.appointmentType, + isVehicleProtected: serviceLocation.isVehicleProtected, + provider: { + IsSafeliteProvider: serviceLocation?.IsSafeliteProvider, + providerNumber: serviceLocation.provider?.providerNumber, + address: { + streetAddress: serviceLocation.provider?.address?.streetAddress, + city: serviceLocation.provider?.address?.city, + state: serviceLocation.provider?.address?.state, + zipCode: serviceLocation.provider?.address?.zipCode, + zipCodeCtu: serviceLocation.provider?.address?.zipCodeCtu + } + }, + techNotes: contactInfo.notesForTechnician + }, + schedule: { + date: schedule.date, + startTime: schedule.startTime, + endTime: schedule.endTime, + routeCode: schedule.routeCode, + jobMaxMinutes: schedule.jobMaxMinutes, + jobMinMinutes: schedule.jobMinMinutes + }, + referralDate: this.order.referralDate, + referralNumber: this.order.referralNumber?.toString(), + referralCorrelationId: this.order.referralCorrelationId, + referralSequenceNumber: this.order.referralSequenceNumber, + eon: this.order.eon, + submitToMainframe: !!this.order.referralNumber, + loadedFromDupeCheck, + submitAfterSave: !!submitAfterSave + }; + return new Promise((resolve, reject) => { globalMethods.callHttpClient({ method: endpoints.SaveSession.method, endpoint: endpoints.SaveSession.url, - payload: { - applicationUser: { - crmCustomerId: this.applicationUser.crmCustomerId, - experiments: this.applicationUser.experiments, - lastPage: this.applicationUser.lastPageVisited, - pageData: this.applicationUser.pageData, - savedSessionId: this.applicationUser.savedSessionId - }, - vehicle: { - year: vehicle.year, - make: vehicle.make, - model: vehicle.model, - style: vehicle.style, - vin: vehicle.vin, - carId: vehicle.carId, - licensePlateNumber: vehicle.registration?.licensePlate - }, - damage: { - numberOfChips: damage.numberOfChips, - glassToReplace: newGlassToReplace, - isRepair: damage.isRepair, - partQuestionAnswers: damage.partQuestionAnswers, - moldingQuestionAnswers: damage.moldingQuestionAnswers, - capabilityQuestionAnswers: damage.capabilityQuestionAnswers, - dateOfLoss: policy.dateOfLoss, - damageCause: policy.damageCause, - damageState: policy.damageState, - damageCity: policy.damageCity, - isDamageGlassOnly: policy.isDamageGlassOnly - }, - policy: { - policyHolder: { - policyFirstName: customer.firstName, - policyLastName: customer.lastName, - policyPhoneNumber: contactInfo.servicePhone, - policyEmail: customer.emailAddress, - policyState: customer.address.state - }, - policyNumber: policy.policyNumber, - policyZipCode: policy.policyZipCode, - noCoverage: policy.noCoverage, - policyLookupSuccessful: policy.policyLookupSuccessful, - originalDeductible: this.order.originalDeductible, - currentDeductible: this.order.currentDeductible, - IsItac: this.order.policy.isITAC, - OemEndorsement: policy.endorsements?.indexOf('OEM Approved') !== -1 ?? false - }, - customer: { - address: { - streetAddress: customer.address?.streetAddress, - streetAddress2: customer.address?.streetAddress2, - city: customer.address?.city, - state: customer.address?.state, - zipCode: customer.address?.zipCode?.toString() - }, - emailAddress: contactInfo.emailAddress || customer.emailAddress, - firstName: contactInfo.firstName || customer.firstName, - lastName: contactInfo.lastName || customer.lastName, - homePhone: contactInfo.homePhone, - servicePhone: contactInfo.servicePhone, - alternativePhone: contactInfo.alternativePhone, - isSmsOptIn: contactInfo.requestTextUpdates ?? false - }, - lineItems: { - glassParts: lineItems.glassParts, - supportingItems: lineItems.supportingItems, - vaps: lineItems.vaps - }, - payment: { - InsuranceCoverage: { - isVerified: payment.insuranceCoverage?.isVerified ?? false, - coverageStatus: payment.insuranceCoverage?.coverageStatus, - claimNumber: payment.insuranceCoverage?.claimNumber - }, - parentAccountNumber: this.issConfig.parentAccountNumber, - paypalToken: payment.paypalToken, - isPaypal: payment.payInAdvanceType === paymentMethods.PAYPAL, - isCreditCard: payment.payInAdvanceType === paymentMethods.CREDIT_CARD, - isAfterpay: payment.payInAdvanceType === paymentMethods.AFTERPAY, - CCToken: payment.creditCardToken - }, - serviceLocation: { - address: { - streetAddress: serviceLocation.address, - city: serviceLocation.city, - state: serviceLocation.state, - zipCode: serviceLocation.zipCode, - zipCodeCtu: serviceLocation.zipCodeCtu - }, - appointmentType: (serviceLocation.appointmentType === AppointmentTypeStrings.MOBILE - || serviceLocation.appointmentType === AppointmentTypeStrings.MOBILE_NOT_ITAC_AND_NOT_NOCOMP) - ? AppointmentTypeStrings.MOBILE : serviceLocation.appointmentType, - isVehicleProtected: serviceLocation.isVehicleProtected, - provider: { - IsSafeliteProvider: serviceLocation?.IsSafeliteProvider, - providerNumber: serviceLocation.provider?.providerNumber, - address: { - streetAddress: serviceLocation.provider?.address?.streetAddress, - city: serviceLocation.provider?.address?.city, - state: serviceLocation.provider?.address?.state, - zipCode: serviceLocation.provider?.address?.zipCode, - zipCodeCtu: serviceLocation.provider?.address?.zipCodeCtu - } - }, - techNotes: contactInfo.notesForTechnician - }, - schedule: { - date: schedule.date, - startTime: schedule.startTime, - endTime: schedule.endTime, - routeCode: schedule.routeCode, - jobMaxMinutes: schedule.jobMaxMinutes, - jobMinMinutes: schedule.jobMinMinutes - }, - referralDate: this.order.referralDate, - referralNumber: this.order.referralNumber?.toString(), - referralCorrelationId: this.order.referralCorrelationId, - referralSequenceNumber: this.order.referralSequenceNumber, - eon: this.order.eon, - submitToMainframe: !!this.order.referralNumber, - loadedFromDupeCheck, - submitAfterSave: !!submitAfterSave - }, + payload, additionalSuccessEventDataHandler: () => `Email provided: ${customer.emailAddress ? 'true' : 'false'}` }).then((response) => {