Cleaning up load session

This commit is contained in:
Michaela Brydon 2023-10-11 18:06:40 -04:00
parent d6c1820cd0
commit 44a6ac5bca
2 changed files with 115 additions and 131 deletions

View file

@ -654,7 +654,7 @@ export const useMainStore = defineStore({
partType: lineItem.partType partType: lineItem.partType
})); }));
const glassPieces = order.damage.glassToReplace const glassPieces = order.damage.glassToReplace
? convertGlassPieceToBackEndCompatibleFormat(order.damage.glassToReplace) ? convertGlassPieceNamingForApi(order.damage.glassToReplace)
: []; : [];
const payload = { const payload = {
startDate, startDate,
@ -714,7 +714,7 @@ export const useMainStore = defineStore({
partType: lineItem.partType partType: lineItem.partType
})); }));
const glassPieces = order.damage.glassToReplace const glassPieces = order.damage.glassToReplace
? convertGlassPieceToBackEndCompatibleFormat(order.damage.glassToReplace) ? convertGlassPieceNamingForApi(order.damage.glassToReplace)
: []; : [];
const payload = { const payload = {
providerNumber, providerNumber,
@ -1040,121 +1040,123 @@ export const useMainStore = defineStore({
}, },
loadSession() { loadSession() {
const { applicationUser } = this; const { applicationUser, order, issConfig } = this;
// TODO how to get savedSessionId for a duplicate referral? // TODO how to get savedSessionId for a duplicate referral?
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
globalMethods.callHttpClient({ globalMethods.callHttpClient({
method: endpoints.LoadSession.method, method: endpoints.LoadSession.method,
endpoint: endpoints.LoadSession.url, endpoint: endpoints.LoadSession.url,
payload: { payload: {
savedSessionId: this.applicationUser.savedSessionId?.toString(), savedSessionId: applicationUser.savedSessionId?.toString(),
referralNumber: this.order.referralNumber?.toString(), referralNumber: order.referralNumber?.toString(),
referralDate: this.order.referralDate?.toString(), referralDate: order.referralDate?.toString(),
parentAccountNumber: this.issConfig.parentAccountNumber, parentAccountNumber: issConfig.parentAccountNumber,
referralCorrelationId: this.order.referralCorrelationId referralCorrelationId: order.referralCorrelationId
} }
}).then((result) => { }).then((result) => {
applicationUser.crmCustomerId = result?.applicationUser?.crmCustomerId; if (!result) {
this.applicationUser.experiments = result?.applicationUser?.experiments; // TODO how should we handle this case?
this.applicationUser.lastPageVisited = result?.applicationUser?.lastPage; return resolve(result);
this.applicationUser.pageData = result?.applicationUser?.pageData; }
this.applicationUser.savedSessionId = result?.applicationUser?.savedSessionId; // TODO this might just be what is passed applicationUser.crmCustomerId = result.applicationUser?.crmCustomerId;
this.applicationUser.hasSentSaveQuoteEmail = result?.applicationUser?.hasSentSaveQuoteEmail; applicationUser.experiments = result.applicationUser?.experiments;
applicationUser.lastPageVisited = result.applicationUser?.lastPage;
applicationUser.pageData = result.applicationUser?.pageData;
applicationUser.savedSessionId = result.applicationUser?.savedSessionId; // TODO this might just be what is passed
applicationUser.hasSentSaveQuoteEmail = result.applicationUser?.hasSentSaveQuoteEmail;
this.order.vehicle.registration.licensePlate = result?.order?.vehicle?.registration?.licensePlateNumber; order.vehicle.registration.licensePlate = result.order?.vehicle?.registration?.licensePlateNumber;
this.order.vehicle.imageUrl = result?.order?.vehicle?.imageUrl; order.vehicle.imageUrl = result.order?.vehicle?.imageUrl;
this.order.vehicle.imageColor = result?.order?.vehicle?.imageVifColor; order.vehicle.imageColor = result.order?.vehicle?.imageVifColor;
this.order.vehicle.imageVifNumber = result?.order?.vehicle?.imageVifNumber; order.vehicle.imageVifNumber = result.order?.vehicle?.imageVifNumber;
this.order.vehicle.year = result?.order?.vehicle?.year; order.vehicle.year = result.order?.vehicle?.year;
this.order.vehicle.make = result?.order?.vehicle?.make; order.vehicle.make = result.order?.vehicle?.make;
this.order.vehicle.model = result?.order?.vehicle?.model; order.vehicle.model = result.order?.vehicle?.model;
this.order.vehicle.style = result?.order?.vehicle?.style; order.vehicle.style = result.order?.vehicle?.style;
this.order.vehicle.carId = result?.order?.vehicle?.carId; order.vehicle.carId = result.order?.vehicle?.carId;
this.order.vehicle.category = result?.order?.vehicle?.category; order.vehicle.category = result.order?.vehicle?.category;
this.order.vehicle.vin = result?.order?.vehicle?.vin; order.vehicle.vin = result.order?.vehicle?.vin;
this.order.customer.emailAddress = result?.order?.customer?.emailAddress; order.customer.emailAddress = result.order?.customer?.emailAddress;
this.order.customer.firstName = result?.order?.policy?.policyHolder?.policyFirstName; order.customer.firstName = result.order?.policy?.policyHolder?.policyFirstName;
this.order.customer.lastName = result?.order?.policy?.policyHolder?.policyLastName; order.customer.lastName = result.order?.policy?.policyHolder?.policyLastName;
this.order.customer.phoneNumber = result?.order?.policy?.policyHolder?.policyPhoneNumber; order.customer.phoneNumber = result.order?.policy?.policyHolder?.policyPhoneNumber;
this.order.customer.address.state = result?.order?.policy?.policyHolder?.policyState;
this.order.customer.address.streetAddress = result?.order?.customer?.address?.streetAddress; order.customer.address.streetAddress = result.order?.customer?.address?.streetAddress;
this.order.customer.address.streetAddress2 = result?.order?.customer?.address?.streetAddress2; order.customer.address.streetAddress2 = result.order?.customer?.address?.streetAddress2;
this.order.customer.address.city = result?.order?.customer?.address?.city; order.customer.address.city = result.order?.customer?.address?.city;
// TODO ask Bill about this order.customer.address.state = result.order?.customer?.address?.state;
// this.order.customer.address.state = result?.order?.customer?.address?.state; order.customer.address.zipCode = result.order?.customer?.address?.zipCode;
this.order.customer.address.zipCode = result?.order?.customer?.address?.zipCode;
this.order.damage.isRepair = result?.order?.damage?.isRepair; order.damage.isRepair = result.order?.damage?.isRepair;
this.order.damage.numberOfChips = result?.order?.damage?.numberOfChips; order.damage.numberOfChips = result.order?.damage?.numberOfChips;
this.order.damage.glassToReplace = result?.order?.damage?.glassToReplace; // TODO this might need transformed order.damage.glassToReplace = result.order?.damage?.glassToReplace;
this.order.damage.capabilityQuestionAnswers = result?.order?.damage?.capabilityQuestionAnswers; order.damage.capabilityQuestionAnswers = result.order?.damage?.capabilityQuestionAnswers;
this.order.damage.moldingQuestionAnswers = result?.order?.damage?.moldingQuestionAnswers; order.damage.moldingQuestionAnswers = result.order?.damage?.moldingQuestionAnswers;
this.order.damage.partQuestionAnswers = result?.order?.damage?.partQuestionAnswers; order.damage.partQuestionAnswers = result.order?.damage?.partQuestionAnswers;
this.order.policy.policyNumber = result?.order?.policy?.policyNumber; order.policy.policyNumber = result.order?.policy?.policyNumber;
this.order.policy.policyZipCode = result?.order?.policy?.policyZipCode; order.policy.policyZipCode = result.order?.policy?.policyZipCode;
this.order.policy.noCoverage = result?.order?.policy?.noCoverage; order.policy.noCoverage = result.order?.policy?.noCoverage;
this.order.policy.policyLookupSuccessful = result?.order?.policy?.policyLookupSuccessful; // TODO probably don't need to load this order.policy.policyLookupSuccessful = result.order?.policy?.policyLookupSuccessful; // TODO probably don't need to load this
this.order.policy.dateOfLoss = result?.order?.damage?.dateOfLoss; order.policy.dateOfLoss = result.order?.damage?.dateOfLoss;
this.order.policy.damageCause = result?.order?.damage?.damageCause; order.policy.damageCause = result.order?.damage?.damageCause;
this.order.policy.damageState = result?.order?.damage?.damageState; order.policy.damageState = result.order?.damage?.damageState;
this.order.policy.damageCity = result?.order?.damage?.damageCity; order.policy.damageCity = result.order?.damage?.damageCity;
this.order.policy.isDamageGlassOnly = result?.order?.damage?.isDamageGlassOnly; order.policy.isDamageGlassOnly = result.order?.damage?.isDamageGlassOnly;
this.order.originalDeductible = result?.order?.policy?.originalDeductible; order.originalDeductible = result.order?.policy?.originalDeductible;
this.order.currentDeductible = result?.order?.policy?.currentDeductible; order.currentDeductible = result.order?.policy?.currentDeductible;
this.order.lineItems.glassParts = result?.order?.lineItems?.glassParts; order.lineItems.glassParts = result.order?.lineItems?.glassParts;
// TODO otherParts // TODO otherParts
this.order.lineItems.supportingItems = result?.order?.lineItems?.supportingItems; order.lineItems.supportingItems = result.order?.lineItems?.supportingItems;
this.order.lineItems.vaps = result?.order?.lineItems?.vaps; order.lineItems.vaps = result.order?.lineItems?.vaps;
this.order.payment.isInsurance = result?.order?.payment?.isInsurance; order.payment.isInsurance = result.order?.payment?.isInsurance;
this.order.payment.insuranceCoverage.isVerified = result?.order?.payment?.insuranceCoverage?.isVerified; order.payment.insuranceCoverage.isVerified = result.order?.payment?.insuranceCoverage?.isVerified;
this.order.payment.insuranceCoverage.coverageStatus = result?.order?.payment?.insuranceCoverage?.coverageStatus; order.payment.insuranceCoverage.coverageStatus = result.order?.payment?.insuranceCoverage?.coverageStatus;
this.order.payment.parentAccountNumber = result?.order?.payment?.parentAccountNumber; order.payment.parentAccountNumber = result.order?.payment?.parentAccountNumber;
this.issConfig.parentAccountNumber = result?.order?.payment?.parentAccountNumber; issConfig.parentAccountNumber = result.order?.payment?.parentAccountNumber;
// TODO result.order.payment.insuranceCoverage.claimNumber order.payment.insuranceCoverage.claimNumber = result.order?.payment?.insuranceCoverage?.claimNumber;
this.order.serviceLocation.address = result?.order?.serviceLocation?.streetAddress; order.serviceLocation.address = result.order?.serviceLocation?.streetAddress;
this.order.serviceLocation.address2 = result?.order?.serviceLocation?.streetAddress2; order.serviceLocation.address2 = result.order?.serviceLocation?.streetAddress2;
this.order.serviceLocation.city = result?.order?.serviceLocation?.city; order.serviceLocation.city = result.order?.serviceLocation?.city;
this.order.serviceLocation.state = result?.order?.serviceLocation?.state; order.serviceLocation.state = result.order?.serviceLocation?.state;
this.order.serviceLocation.zipCode = result?.order?.serviceLocation?.zipCode; order.serviceLocation.zipCode = result.order?.serviceLocation?.zipCode;
this.order.serviceLocation.zipCodeCtu = result?.order?.serviceLocation?.zipCodeCtu; order.serviceLocation.zipCodeCtu = result.order?.serviceLocation?.zipCodeCtu;
this.order.serviceLocation.appointmentType = result?.order?.serviceLocation?.appointmentType; order.serviceLocation.appointmentType = result.order?.serviceLocation?.appointmentType;
this.order.serviceLocation.isVehicleProtected = result?.order?.serviceLocation?.isVehicleProtected; order.serviceLocation.isVehicleProtected = result.order?.serviceLocation?.isVehicleProtected;
this.order.serviceLocation.provider.providerNumber = result?.order?.serviceLocation?.provider?.providerNumber; order.serviceLocation.provider.providerNumber = result.order?.serviceLocation?.provider?.providerNumber;
this.order.serviceLocation.provider.address.streetAddress = result?.order?.serviceLocation?.provider?.address?.streetAddress; order.serviceLocation.provider.address.streetAddress = result.order?.serviceLocation?.provider?.address?.streetAddress;
this.order.serviceLocation.provider.address.city = result?.order?.serviceLocation?.provider?.address?.city; order.serviceLocation.provider.address.city = result.order?.serviceLocation?.provider?.address?.city;
this.order.serviceLocation.provider.address.state = result?.order?.serviceLocation?.provider?.address?.state; order.serviceLocation.provider.address.state = result.order?.serviceLocation?.provider?.address?.state;
this.order.serviceLocation.provider.address.zipCode = result?.order?.serviceLocation?.provider?.address?.zipCode; order.serviceLocation.provider.address.zipCode = result.order?.serviceLocation?.provider?.address?.zipCode;
this.order.serviceLocation.provider.address.zipCodeCtu = result?.order?.serviceLocation?.provider?.address?.zipCodeCtu; order.serviceLocation.provider.address.zipCodeCtu = result.order?.serviceLocation?.provider?.address?.zipCodeCtu;
this.order.contactInfo.firstName = result?.order?.customer?.firstName; order.contactInfo.firstName = result.order?.customer?.firstName;
this.order.contactInfo.lastName = result?.order?.customer?.lastName; order.contactInfo.lastName = result.order?.customer?.lastName;
this.order.contactInfo.emailAddress = result?.order?.customer?.emailAddress; order.contactInfo.emailAddress = result.order?.customer?.emailAddress;
this.order.contactInfo.phoneNumber = result?.order?.customer?.phoneNumber; order.contactInfo.phoneNumber = result.order?.customer?.phoneNumber;
this.order.contactInfo.requestTextUpdates = result?.order?.customer?.isSmsOptIn; // TODO confirm order.contactInfo.requestTextUpdates = result.order?.customer?.isSmsOptIn; // TODO confirm
this.order.contactInfo.notesForTechnician = result?.order?.serviceLocation?.techNotes; order.contactInfo.notesForTechnician = result.order?.serviceLocation?.techNotes;
// TODO service phone number ?? // TODO service phone number ??
// TODO isSmsOptIn service ?? // TODO isSmsOptIn service ??
this.order.schedule.date = result?.order?.schedule?.date; order.schedule.date = result.order?.schedule?.date;
this.order.schedule.startTime = result?.order?.schedule?.startTime; order.schedule.startTime = result.order?.schedule?.startTime;
this.order.schedule.endTime = result?.order?.schedule?.endTime; order.schedule.endTime = result.order?.schedule?.endTime;
this.order.schedule.routeCode = result?.order?.schedule?.routeCode; order.schedule.routeCode = result.order?.schedule?.routeCode;
this.order.schedule.jobMaxMinutes = result?.order?.schedule?.jobMaxMinutes; order.schedule.jobMaxMinutes = result.order?.schedule?.jobMaxMinutes;
// TODO result.order.schedule.jobMinMinutes order.schedule.jobMinMinutes = result.order?.schedule?.jobMinMinutes;
this.order.referralNumber = result?.order?.referralNumber; order.referralNumber = result.order?.referralNumber;
this.order.referralDate = result?.order?.referralDate; order.referralDate = result.order?.referralDate;
this.order.referralCorrelationId = result?.order?.referralCorrelationId; order.referralCorrelationId = result.order?.referralCorrelationId;
this.order.referralSequenceNumber = result?.order?.referralSequenceNumber; order.referralSequenceNumber = result.order?.referralSequenceNumber;
this.order.eon = result?.order?.eon; order.eon = result.order?.eon;
// TODO this.order.workOrderNumber not set // TODO order.workOrderNumber not set, but this likely is not an issue since WON => will not return
return resolve(result); return resolve(result);
}, (error) => { }, (error) => {
console.log(error); console.log(error);
@ -1984,44 +1986,30 @@ function sortArrayOfObjectsByPropertyValue(arrayOfObjects, propertyName) {
} }
function convertGlassPieceNamingForApi(glassArray) { function convertGlassPieceNamingForApi(glassArray) {
if (!glassArray || glassArray.length === 0) return [];
// check if array already converted. (likely when a session has been saved previously and then reloaded) // check if array already converted. (likely when a session has been saved previously and then reloaded)
if (glassArray[0].location !== undefined) { if (glassArray[0].location !== undefined) {
return glassArray; return glassArray;
} }
const converted = []; return glassArray?.map((glass) => new {
glassArray.forEach((glass) => { location: glass.glassLocation,
converted.push({ name: glass.glassName
location: glass.glassLocation, }()) ?? [];
name: glass.glassName
});
});
return converted;
} }
function convertResultsForApi(resultsArray) { function convertResultsForApi(resultsArray) {
if (!resultsArray) return []; return resultsArray?.map((answer) => new {
const converted = []; location: answer.glassLocation,
resultsArray.forEach((answer) => { name: answer.glassName,
converted.push({ result: answer.result
location: answer.glassLocation, }()) ?? [];
name: answer.glassName,
result: answer.result
});
});
return converted;
} }
function convertGlassPieceNamingFromApi(glassArray) { function convertGlassPieceNamingFromApi(glassArray) {
glassArray.forEach((glass) => { return glassArray?.map((glass) => new {
glass.glassLocation = glass.glassPiece.location; glassLocation: glass.glassPiece.location,
glass.glassName = glass.glassPiece.name; glassName: glass.glassPiece.name
delete glass.glassPiece; }()) ?? [];
return glass;
});
return glassArray;
} }
function addPricesToLineItems(lineItems, pricingLineItems) { function addPricesToLineItems(lineItems, pricingLineItems) {
@ -2078,13 +2066,6 @@ function buildQueryStringParameterFromArrayOfComplexObjects(arrayOfObjects, para
return queryStringParameter.slice(0, -1); return queryStringParameter.slice(0, -1);
} }
function convertGlassPieceToBackEndCompatibleFormat(glassPieces) {
return glassPieces.map((glassPiece) => ({
location: glassPiece.glassLocation,
name: glassPiece.glassName
}));
}
function providersEqual(providerA, providerB) { function providersEqual(providerA, providerB) {
return ( return (
providerA.providerNumber === providerB.providerNumber providerA.providerNumber === providerB.providerNumber

View file

@ -1,5 +1,5 @@
import { useMainStore } from '@/store/index.js';
import { setActivePinia, createPinia } from 'pinia'; import { setActivePinia, createPinia } from 'pinia';
import { useMainStore } from '@/store/index.js';
import globalMethods from '@/global-methods.js'; import globalMethods from '@/global-methods.js';
import { getRandomString, getRandomGuid, getRandomInt, getRandomBoolean } from '@/helpers/data-generation.js'; import { getRandomString, getRandomGuid, getRandomInt, getRandomBoolean } from '@/helpers/data-generation.js';
import coverageStatuses from '@/constants/coverage-statuses.js'; import coverageStatuses from '@/constants/coverage-statuses.js';
@ -10,9 +10,11 @@ describe('Store', () => {
let store; let store;
beforeEach(() => { beforeEach(() => {
console.log('HI');
const pinia = createPinia(); const pinia = createPinia();
setActivePinia(pinia); setActivePinia(pinia);
store = useMainStore(); store = useMainStore();
store.$reset();
store.applicationUser.eventBus = []; store.applicationUser.eventBus = [];
jest.resetAllMocks(); jest.resetAllMocks();
}); });
@ -952,7 +954,7 @@ describe('Store', () => {
}); });
}); });
describe('loadSession method', () => { describe.only('loadSession method', () => {
describe('successful method call', () => { describe('successful method call', () => {
const applicationUser = { const applicationUser = {
crmCustomerId: getRandomString(6, 6), crmCustomerId: getRandomString(6, 6),
@ -1218,7 +1220,7 @@ describe('Store', () => {
expect(store.order.customer.address.streetAddress).toBe(customer.address.streetAddress); expect(store.order.customer.address.streetAddress).toBe(customer.address.streetAddress);
expect(store.order.customer.address.streetAddress2).toBe(customer.address.streetAddress2); expect(store.order.customer.address.streetAddress2).toBe(customer.address.streetAddress2);
expect(store.order.customer.address.city).toBe(customer.address.city); expect(store.order.customer.address.city).toBe(customer.address.city);
expect(store.order.customer.address.state).toBe(policy.policyHolder.policyState); expect(store.order.customer.address.state).toBe(customer.address.state);
expect(store.order.customer.address.zipCode).toBe(customer.address.zipCode); expect(store.order.customer.address.zipCode).toBe(customer.address.zipCode);
expect(store.order.customer.firstName).toBe(policy.policyHolder.policyFirstName); expect(store.order.customer.firstName).toBe(policy.policyHolder.policyFirstName);
expect(store.order.customer.lastName).toBe(policy.policyHolder.policyLastName); expect(store.order.customer.lastName).toBe(policy.policyHolder.policyLastName);
@ -1275,6 +1277,7 @@ describe('Store', () => {
expect(store.order.payment.insuranceCoverage.coverageStatus).toBe(payment.insuranceCoverage.coverageStatus); expect(store.order.payment.insuranceCoverage.coverageStatus).toBe(payment.insuranceCoverage.coverageStatus);
expect(store.order.payment.parentAccountNumber).toBe(payment.parentAccountNumber); expect(store.order.payment.parentAccountNumber).toBe(payment.parentAccountNumber);
expect(store.issConfig.parentAccountNumber).toBe(payment.parentAccountNumber); expect(store.issConfig.parentAccountNumber).toBe(payment.parentAccountNumber);
expect(store.order.payment.insuranceCoverage.claimNumber).toBe(payment.insuranceCoverage.claimNumber);
}); });
it('sets expected contactInfo data', async () => { it('sets expected contactInfo data', async () => {
// Arrange // Arrange