DigitalConsumer.ISS/src/helpers/order-helper.js
Josh Dassinger 9c7c83c470 SSR-1446 Bailout Fixes
Fixed bailout not submitting after save session error
Fixed being able to navigate to any page after bailout submit
Fixed query=[object Object] in url on submit WO error
2024-08-07 10:28:12 -05:00

53 lines
1.9 KiB
JavaScript

import { useMainStore } from '@/store';
import { updateOrCreateISSCookie } from '@/helpers/cookie-helper';
import submitType from '@/constants/submit-type';
/*
Encapsulates asynchronous Save Session logic inside a promise to allow for Save Session queuing
*/
async function saveSessionHelper(store, { submitAfterSave }) {
const savedSessionInfo = await store.saveSession({ submitAfterSave });
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
update the cookie. To force synchronous behavior pass in 'true' for shouldAwaitSaveSessionQueue
*/
export async function saveSession({ shouldAwaitSaveSessionQueue = false, submitAfterSave = false }) {
const store = useMainStore();
const saveSessionPromise = store.applicationUser.saveSessionPromise
? store.applicationUser.saveSessionPromise.then(() => saveSessionHelper(store, { submitAfterSave }))
: saveSessionHelper(store, { submitAfterSave });
store.setSaveSessionPromise(saveSessionPromise);
if (!store.applicationUser.savedSessionId || shouldAwaitSaveSessionQueue) {
await saveSessionPromise;
}
}
/*
Will determine if to submitWorkOrder.
TODO: Add more description to this
*/
export async function submitWorkOrder({ submitType }) {
const store = useMainStore();
store.resetSubmittedOrder();
await saveSession({
shouldAwaitSaveSessionQueue: true,
submitAfterSave: true
});
store.createSubmittedOrder(submitType);
}
export async function submitBailout() {
const store = useMainStore();
store.resetSubmittedOrder();
await store.saveSession({});
store.createSubmittedOrder(submitType.BAILOUT);
}