Small tweaks

This commit is contained in:
Bill Richardson 2024-03-04 16:06:54 -05:00
parent 1a5b958b8c
commit ff5f8c5b29
6 changed files with 91 additions and 64 deletions

View file

@ -1,6 +1,17 @@
import { useMainStore } from '@/store';
import { updateOrCreateISSCookie } from '@/helpers/cookie-helper';
/*
Encapsulates asynchronous Save Session logic inside a promise to allow for Save Session queuing
*/
async function saveSessionHelper(store) {
const savedSessionInfo = await store.saveSession();
if (savedSessionInfo) {
store.setSaveSessionInfo(savedSessionInfo.data);
}
updateOrCreateISSCookie();
}
/*
Will call API to save existing order, or create new one depending where it's called from.
This will also set Referral information in the store after saving, and then
@ -8,8 +19,8 @@ import { updateOrCreateISSCookie } from '@/helpers/cookie-helper';
*/
export async function saveSession({ shouldAwaitSaveSessionQueue = false }) {
const store = useMainStore();
var saveSessionPromise = store.applicationUser.saveSessionPromise
? store.applicationUser.saveSessionPromise.then(() => { return saveSessionHelper(store); })
const saveSessionPromise = store.applicationUser.saveSessionPromise
? store.applicationUser.saveSessionPromise.then(() => saveSessionHelper(store))
: saveSessionHelper(store);
store.setSaveSessionPromise(saveSessionPromise);
@ -20,12 +31,18 @@ export async function saveSession({ shouldAwaitSaveSessionQueue = false }) {
}
/*
Encapsulates asynchronous Save Session logic inside a promise to allow for Save Session queuing
Will determine if to submitWorkOrder.
TODO: Add more description to this
*/
async function saveSessionHelper(store) {
const savedSessionInfo = await store.saveSession();
if (savedSessionInfo) {
store.setSaveSessionInfo(savedSessionInfo.data);
}
updateOrCreateISSCookie();
}
export async function submitWorkOrder({
pageNameToLog,
submitAfterSave = false,
createDeleteStatusWorkOrderForPia = false
}) {
await saveSession({
pageNameToLog,
shouldAwaitSaveSessionQueue: true,
submitAfterSave,
createDeleteStatusWorkOrderForPia
});
}

View file

@ -1,4 +1,4 @@
export default function getQuerystringParameter(key) {
export default function getQueryStringParameter(key) {
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
const lowerCaseParams = new URLSearchParams();

View file

@ -11,8 +11,10 @@ import { Form } from 'vee-validate';
import BaseFormMixin from '@/mixins/base-form-mixin.js';
import { useMainStore } from '@/store/index.js';
import queryStrings from '@/constants/query-strings';
import getQuerystringParameter from '@/helpers/querystring-helper.js';
import getQueryStringParameter from '@/helpers/querystring-helper.js';
import { paymentMethods } from '@/constants/payment-method-constants.js';
import { submitWorkOrder } from '@/helpers/order-helper.js';
import showIssLoadingModal from '@/helpers/loading-modal-helper';
export default {
name: 'payment-return',
@ -22,14 +24,14 @@ export default {
},
mixins: [BaseFormMixin],
async mounted() {
const payInAdvanceError = getQuerystringParameter(queryStrings.ERROR);
showIssLoadingModal(true);
const payInAdvanceError = getQueryStringParameter(queryStrings.ERROR);
const { payInAdvanceType } = useMainStore().order.payment;
if (payInAdvanceError) {
console.error(`Error during payment: ${payInAdvanceError}`);
const paymentPageNavScenario =
payInAdvanceType === paymentMethods.CREDIT_CARD
|| payInAdvanceType === paymentMethods.AFTERPAY;
payInAdvanceType === paymentMethods.CREDIT_CARD || payInAdvanceType === paymentMethods.AFTERPAY;
if (paymentPageNavScenario) {
this.$router.navigate(
this.navigationScenarios.PAY_IN_ADVANCE_CREDIT_CARD_ERROR,
@ -71,10 +73,16 @@ export default {
arePagePrerequisitesValid() {
return true;
},
async processCreditCardResponse() {
const subscriptionId = getQuerystringParameter(queryStrings.SUBSCRIPTIONID);
async processPaypalResponse() {
const token = getQueryStringParameter(queryStrings.TOKEN);
this.mainStore.updatePaypalToken(token);
const referralSeqNum = getQuerystringParameter(queryStrings.REFERRAL_SEQ_NUM);
await this.saveAndSubmitWorkOrder();
},
async processCreditCardResponse() {
const subscriptionId = getQueryStringParameter(queryStrings.SUBSCRIPTIONID);
const referralSeqNum = getQueryStringParameter(queryStrings.REFERRAL_SEQ_NUM);
if (referralSeqNum !== useMainStore().order.referralSequenceNumber) {
console.error(`error: unknown ref:${referralSeqNum} ${useMainStore().order.referralSequenceNumber}`);
this.$router.navigate(
@ -85,19 +93,19 @@ export default {
}
);
} else {
const expMonth = getQuerystringParameter(queryStrings.CARD_EXPIRATION_MONTH);
const expYear = getQuerystringParameter(queryStrings.CARD_EXPIRATION_YEAR);
const cardType = getQuerystringParameter(queryStrings.CARD_TYPE);
const billToPostalCode = getQuerystringParameter(queryStrings.BILL_TO_POSTAL_CODE);
const billToFirstName = getQuerystringParameter(queryStrings.BILL_TO_FIRST_NAME);
const billToLastName = getQuerystringParameter(queryStrings.BILL_TO_LAST_NAME);
const referenceNumber = getQuerystringParameter(queryStrings.REFERENCE_NUMBER);
const authCode = getQuerystringParameter(queryStrings.AUTH_CODE);
const transactionId = getQuerystringParameter(queryStrings.TRANSACTION_ID);
const transReferenceNumber = getQuerystringParameter(queryStrings.TRANS_REFERENCE_NUMBER);
const lastFour = getQuerystringParameter(queryStrings.LAST_FOUR);
const expMonth = getQueryStringParameter(queryStrings.CARD_EXPIRATION_MONTH);
const expYear = getQueryStringParameter(queryStrings.CARD_EXPIRATION_YEAR);
const cardType = getQueryStringParameter(queryStrings.CARD_TYPE);
const billToPostalCode = getQueryStringParameter(queryStrings.BILL_TO_POSTAL_CODE);
const billToFirstName = getQueryStringParameter(queryStrings.BILL_TO_FIRST_NAME);
const billToLastName = getQueryStringParameter(queryStrings.BILL_TO_LAST_NAME);
const referenceNumber = getQueryStringParameter(queryStrings.REFERENCE_NUMBER);
const authCode = getQueryStringParameter(queryStrings.AUTH_CODE);
const transactionId = getQueryStringParameter(queryStrings.TRANSACTION_ID);
const transReferenceNumber = getQueryStringParameter(queryStrings.TRANS_REFERENCE_NUMBER);
const lastFour = getQueryStringParameter(queryStrings.LAST_FOUR);
const ccToken = {
const creditCardToken = {
subscriptionId,
expMonth,
expYear,
@ -111,7 +119,7 @@ export default {
transReferenceNumber,
lastFour
};
useMainStore().updateCCToken(ccToken);
useMainStore().updateCreditCardToken(creditCardToken);
await this.saveAndSubmitWorkOrder();
}
},
@ -119,9 +127,10 @@ export default {
// Final work order submit after returning from pay in advance.
useMainStore().resetSubmittedOrder();
try {
// do we have a function to submit a work order,
// perhaps built into saveSession?
// we need to submit the work order here
await submitWorkOrder({
pageNameToLog: 'payment-return',
submitAfterSave: true
});
} catch (error) {
console.error(`error: response from submit work order:${error.message}`);
this.$router.navigate(
@ -131,9 +140,11 @@ export default {
[queryStrings.DISPLAY_PAY_IN_ADVANCE_ALERT]: true
}
);
showIssLoadingModal(false);
return;
}
showIssLoadingModal(false);
useMainStore().createSubmittedOrder();
this.$router.navigate(
this.navigationScenarios.PAY_IN_ADVANCE_SUCCESS,

View file

@ -2,7 +2,7 @@
import { createWebHistory, createRouter } from 'vue-router';
import lazyLoadComponent from '@/router/dynamic-routing/component-loader';
import issPageValues from '@/router/router-constants/issPage-values';
import { routingTable } from '@/router/router-constants/routing-table';
import routingTable from '@/router/router-constants/routing-table';
import { useMainStore } from '@/store';
import eventBus from '@/helpers/event-bus/event-bus';
import { globalEvents, globalEventTypes } from '@/constants/events';
@ -16,11 +16,9 @@ import showIssLoadingModal from '@/helpers/loading-modal-helper';
import analyticsMixin from '@/mixins/analytics-mixin';
import { saveSession } from '@/helpers/order-helper.js';
import routerParams from '@/router/router-constants/router-params';
import bailoutCode from '@/constants/bailoutCode';
import IssPageValues from '@/router/router-constants/issPage-values';
import canBailoutNavigateBack from '@/helpers/bailout-helper';
import bailoutMessage from '@/constants/bailoutMessage';
import navigationScenarios from './router-constants/navigation-scenarios';
import canBailoutNavigateBack from "@/helpers/bailout-helper";
import bailoutMessage from "@/constants/bailoutMessage";
const routes = [
{
@ -129,7 +127,7 @@ router.beforeEach(async (to, from) => {
showIssLoadingModal(true);
}
const isInIframe = fromQueryPage === IssPageValues.PAYMENT_PAGE;
const isInIframe = fromQueryPage === issPageValues.PAYMENT_PAGE;
if (isInIframe) {
// need to set window.top.location.href directly when navigating out of an iframe
// especially when navigating with browser buttons
@ -139,7 +137,7 @@ router.beforeEach(async (to, from) => {
const store = useMainStore();
// Prevent navigating backwards if we enter a bailout that we are not allowed to go back on
if (store.isBailout && from.name === IssPageValues.BAILOUT_PAGE && to.name !== 'root' && to.name !== IssPageValues.CONTACT_CONFIRMATION
if (store.isBailout && from.name === issPageValues.BAILOUT_PAGE && to.name !== 'root' && to.name !== issPageValues.CONTACT_CONFIRMATION
&& !canBailoutNavigateBack()) {
return false;
}

View file

@ -655,7 +655,7 @@ const routingTable = () => [
{
scenario: navigationScenarios.PAY_IN_ADVANCE_SUCCESS,
destinationIssPageValue: issPageValues.CONFIRMATION
},
}
]
},
{
@ -763,4 +763,4 @@ const routingTable = () => [
];
export { routingTable };
export default routingTable;

View file

@ -157,7 +157,8 @@ const getDefaultState = () => ({
parentAccountNumber: 0,
isPayInAdvance: null,
payInAdvanceType: null,
ccToken: {
paypalToken: null,
creditCardToken: {
subscriptionId: null,
expMonth: null,
expYear: null,
@ -1202,7 +1203,7 @@ export const useMainStore = defineStore({
submitToMainframe: !!this.order.referralNumber,
loadedFromDupeCheck
},
additionalSuccessEventDataHandler: (response) =>
additionalSuccessEventDataHandler: () =>
`Email provided: ${customer.emailAddress ? 'true' : 'false'}`
}).then((response) => {
if (loadedFromDupeCheck) {
@ -1304,7 +1305,23 @@ export const useMainStore = defineStore({
throw ex;
}
},
updateCreditCardToken(token) {
this.order.payment.creditCardToken.subscriptionId = token.subscriptionId;
this.order.payment.creditCardToken.expMonth = token.expMonth;
this.order.payment.creditCardToken.expYear = token.expYear;
this.order.payment.creditCardToken.cardType = token.cardType;
this.order.payment.creditCardToken.billToPostalCode = token.billToPostalCode;
this.order.payment.creditCardToken.billToFirstName = token.billToFirstName;
this.order.payment.creditCardToken.billToLastName = token.billToLastName;
this.order.payment.creditCardToken.referenceNumber = token.referenceNumber;
this.order.payment.creditCardToken.authCode = token.authCode;
this.order.payment.creditCardToken.transactionId = token.transactionId;
this.order.payment.creditCardToken.transReferenceNumber = token.transReferenceNumber;
this.order.payment.creditCardToken.lastFour = token.lastFour;
},
updatePaypalToken(token) {
this.order.payment.paypalToken = token;
},
setSaveSessionPromise(promise) {
this.applicationUser.saveSessionPromise = promise;
},
@ -1399,7 +1416,7 @@ export const useMainStore = defineStore({
this.order.vehicle.registration.firstName = null;
this.order.vehicle.registration.lastName = null;
},
resetServiceLocationAndDependencies(context) {
resetServiceLocationAndDependencies() {
this.resetServiceLocationAppointmentType();
this.resetServiceLocationProvider();
this.resetSchedule();
@ -2130,7 +2147,6 @@ export const useMainStore = defineStore({
this.resetInsurance();
this.resetBailout();
},
savePaymentMethodChoice(paymentMethod) {
const isPayInAdvance = paymentMethod !== paymentMethods.PAY_AT_TIME_OF_SERVICE;
this.order.payment.isPayInAdvance = isPayInAdvance;
@ -2144,21 +2160,6 @@ export const useMainStore = defineStore({
});
},
updateCCToken(ccToken) {
this.order.payment.ccToken.subscriptionId = ccToken.subscriptionId;
this.order.payment.ccToken.expMonth = ccToken.expMonth;
this.order.payment.ccToken.expYear = ccToken.expYear;
this.order.payment.ccToken.cardType = ccToken.cardType;
this.order.payment.ccToken.billToPostalCode = ccToken.billToPostalCode;
this.order.payment.ccToken.billToFirstName = ccToken.billToFirstName;
this.order.payment.ccToken.billToLastName = ccToken.billToLastName;
this.order.payment.ccToken.referenceNumber = ccToken.referenceNumber;
this.order.payment.ccToken.authCode = ccToken.authCode;
this.order.payment.ccToken.transactionId = ccToken.transactionId;
this.order.payment.ccToken.transReferenceNumber = ccToken.transReferenceNumber;
this.order.payment.ccToken.lastFour = ccToken.lastFour;
},
hasSubmittedOrder() {
return window.sessionStorage.getItem(webStorageConstants.SUBMITTED_ORDER) !== null;
},
@ -2183,7 +2184,7 @@ export const useMainStore = defineStore({
resetSubmittedOrder() {
// clear from local storage
window.sessionStorage.removeItem(webStorageConstants.SUBMITTED_ORDER);
},
}
},
persist: true