Cleaning up load session
This commit is contained in:
parent
d6c1820cd0
commit
44a6ac5bca
2 changed files with 115 additions and 131 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue