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

View file

@ -1,5 +1,5 @@
import { useMainStore } from '@/store/index.js';
import { setActivePinia, createPinia } from 'pinia';
import { useMainStore } from '@/store/index.js';
import globalMethods from '@/global-methods.js';
import { getRandomString, getRandomGuid, getRandomInt, getRandomBoolean } from '@/helpers/data-generation.js';
import coverageStatuses from '@/constants/coverage-statuses.js';
@ -10,9 +10,11 @@ describe('Store', () => {
let store;
beforeEach(() => {
console.log('HI');
const pinia = createPinia();
setActivePinia(pinia);
store = useMainStore();
store.$reset();
store.applicationUser.eventBus = [];
jest.resetAllMocks();
});
@ -952,7 +954,7 @@ describe('Store', () => {
});
});
describe('loadSession method', () => {
describe.only('loadSession method', () => {
describe('successful method call', () => {
const applicationUser = {
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.streetAddress2).toBe(customer.address.streetAddress2);
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.firstName).toBe(policy.policyHolder.policyFirstName);
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.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 () => {
// Arrange