Updates to provider call.
Reorg'd imports on store index.js Sorted by file name (constants, helpers) Updated serviceability call with application name.
This commit is contained in:
parent
40275db79f
commit
107cec3d69
4 changed files with 73 additions and 24 deletions
|
|
@ -1,4 +1,5 @@
|
||||||
const partTypeStrings = Object.freeze({
|
const partTypeStrings = Object.freeze({
|
||||||
|
ADAS_RECALIBRATION: 'ADAS RECALIBRATION',
|
||||||
WINDSHIELD: 'WINDSHIELD',
|
WINDSHIELD: 'WINDSHIELD',
|
||||||
FRONT_WIPER: 'FRONT WIPER',
|
FRONT_WIPER: 'FRONT WIPER',
|
||||||
REAR_WIPER: 'REAR WIPER',
|
REAR_WIPER: 'REAR WIPER',
|
||||||
|
|
|
||||||
25
src/helpers/recal-helper.js
Normal file
25
src/helpers/recal-helper.js
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
import partTypeStrings from '@/constants/part-type-strings';
|
||||||
|
|
||||||
|
const recalPartTypes = [partTypeStrings.RECALIBRATION, partTypeStrings.ADAS_RECALIBRATION];
|
||||||
|
|
||||||
|
export function isRecalPart(part) {
|
||||||
|
return recalPartTypes.some((type) => type === part.partType);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function isRecalPartOrHasChildRecalPart(glassPart) {
|
||||||
|
const isGlassPartRecalPart = isRecalPart(glassPart);
|
||||||
|
|
||||||
|
if (!isGlassPartRecalPart && glassPart.childParts && glassPart.childParts.length > 0) {
|
||||||
|
return glassPart.childParts.filter((cp) => isRecalPartOrHasChildRecalPart(cp));
|
||||||
|
}
|
||||||
|
|
||||||
|
return isGlassPartRecalPart;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getTopLevelGlassPartsWithRecal(glassParts) {
|
||||||
|
if (!glassParts) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return glassParts.filter((gp) => isRecalPartOrHasChildRecalPart(gp));
|
||||||
|
}
|
||||||
|
|
@ -1,39 +1,40 @@
|
||||||
/* eslint-disable no-use-before-define */
|
/* eslint-disable no-use-before-define */
|
||||||
/* eslint-disable max-len */
|
/* eslint-disable max-len */
|
||||||
import { defineStore } from 'pinia';
|
import { defineStore } from 'pinia';
|
||||||
|
import applicationConfig from '@/constants/application-config';
|
||||||
|
import bailoutCode from '@/constants/bailoutCode';
|
||||||
|
import bailoutMessage from '@/constants/bailoutMessage';
|
||||||
|
import coverageStatuses from '@/constants/coverage-statuses';
|
||||||
|
import coverageType from '@/constants/coverage-type';
|
||||||
|
import damageLocationsSelected from '@/constants/damage-locations-selected';
|
||||||
import { endpoints } from '@/constants/endpoints';
|
import { endpoints } from '@/constants/endpoints';
|
||||||
// eslint-disable-next-line import/no-cycle
|
import { experimentSettings, experimentTriggers, experimentUniverses } from '@/constants/experiments';
|
||||||
import { getDateForSavedSessionTimeout } from '@/helpers/session-helper';
|
import partNumberStrings from '@/constants/part-number-strings';
|
||||||
|
import partTypeStrings from '@/constants/part-type-strings';
|
||||||
|
import { paymentMethods } from '@/constants/payment-method-constants';
|
||||||
|
import { AppointmentTypeStrings } from '@/constants/schedule-constants';
|
||||||
|
import webStorageConstants from '@/constants/web-storage-constants';
|
||||||
// eslint-disable-next-line import/no-cycle
|
// eslint-disable-next-line import/no-cycle
|
||||||
import globalMethods from '@/global-methods';
|
import globalMethods from '@/global-methods';
|
||||||
import { experimentSettings, experimentTriggers, experimentUniverses } from '@/constants/experiments';
|
// eslint-disable-next-line import/no-cycle
|
||||||
import applicationConfig from '@/constants/application-config';
|
import { getSessionKeyValue, getUserIdValue, deleteISSCookie } from '@/helpers/cookie-helper';
|
||||||
import issPageValues from '@/router/router-constants/issPage-values';
|
|
||||||
import damageLocationsSelected from '@/constants/damage-locations-selected';
|
|
||||||
import coverageStatuses from '@/constants/coverage-statuses';
|
|
||||||
import { AppointmentTypeStrings } from '@/constants/schedule-constants';
|
|
||||||
import { convertDateStringToDate, getDateDifferenceInDays, militaryToTwelveHourTime } from '@/helpers/date-helper';
|
import { convertDateStringToDate, getDateDifferenceInDays, militaryToTwelveHourTime } from '@/helpers/date-helper';
|
||||||
import { paymentMethods } from '@/constants/payment-method-constants';
|
import { getExperimentSettingValue } from '@/helpers/experiment-helper';
|
||||||
import webStorageConstants from '@/constants/web-storage-constants';
|
import { findLineItemIndex, getLineItemsFlattened } from '@/helpers/line-items-helper';
|
||||||
import {
|
import {
|
||||||
deductibleForSelectedVehicle, endorsementsForSelectedVehicle,
|
deductibleForSelectedVehicle, endorsementsForSelectedVehicle,
|
||||||
noCoverageForSelectedVehicle,
|
noCoverageForSelectedVehicle,
|
||||||
repairWaivedForSelectedVehicle
|
repairWaivedForSelectedVehicle
|
||||||
} from '@/helpers/policy-vehicle-helper';
|
} from '@/helpers/policy-vehicle-helper';
|
||||||
import partTypeStrings from '@/constants/part-type-strings';
|
|
||||||
import bailoutMessage from '@/constants/bailoutMessage';
|
|
||||||
import bailoutCode from '@/constants/bailoutCode';
|
|
||||||
import partNumberStrings from '@/constants/part-number-strings';
|
|
||||||
import { findLineItemIndex, getLineItemsFlattened } from '@/helpers/line-items-helper';
|
|
||||||
import {
|
import {
|
||||||
buildQueryStringParameterFromArrayOfComplexObjects, buildURLSearchParams,
|
buildURLSearchParams,
|
||||||
getLineItemQueryString,
|
|
||||||
getPartNumbersListForQueryString,
|
getPartNumbersListForQueryString,
|
||||||
getTaxLineItemQueryString
|
getTaxLineItemQueryString
|
||||||
} from '@/helpers/querystring-helper';
|
} from '@/helpers/querystring-helper';
|
||||||
import coverageType from '@/constants/coverage-type';
|
import { getTopLevelGlassPartsWithRecal } from '@/helpers/recal-helper';
|
||||||
import { getExperimentSettingValue, getFeatureTogglesQueryString } from '@/helpers/experiment-helper';
|
// eslint-disable-next-line import/no-cycle
|
||||||
import { getSessionKeyValue, getUserIdValue, deleteISSCookie } from '@/helpers/cookie-helper';
|
import { getDateForSavedSessionTimeout } from '@/helpers/session-helper';
|
||||||
|
import issPageValues from '@/router/router-constants/issPage-values';
|
||||||
|
|
||||||
const storeId = 'main';
|
const storeId = 'main';
|
||||||
|
|
||||||
|
|
@ -1000,23 +1001,41 @@ export const useMainStore = defineStore({
|
||||||
},
|
},
|
||||||
|
|
||||||
getProviders(serviceZipCode) {
|
getProviders(serviceZipCode) {
|
||||||
|
const { carId } = this.order.vehicle;
|
||||||
const damageType = this.damage.isRepair ? 'Repair' : 'Replace';
|
const damageType = this.damage.isRepair ? 'Repair' : 'Replace';
|
||||||
|
const { parentAccountNumber } = this.issConfig;
|
||||||
|
const partsWithRecal = getTopLevelGlassPartsWithRecal(this.order.lineItems.glassParts);
|
||||||
|
const windshieldPartWithRecal = partsWithRecal?.length > 0 ? partsWithRecal[0] : null;
|
||||||
|
const safeliteOnly = true;
|
||||||
const shopRadiusInMiles = 100;
|
const shopRadiusInMiles = 100;
|
||||||
|
|
||||||
|
let url = `${endpoints.GetProviders.url}/${serviceZipCode}/${damageType}/${shopRadiusInMiles}/${parentAccountNumber}/${safeliteOnly}/${carId}`;
|
||||||
|
if (windshieldPartWithRecal) {
|
||||||
|
url += `/${windshieldPartWithRecal.partNumber}`;
|
||||||
|
}
|
||||||
return globalMethods.callHttpClient({
|
return globalMethods.callHttpClient({
|
||||||
method: endpoints.GetProviders.method,
|
method: endpoints.GetProviders.method,
|
||||||
endpoint: `${endpoints.GetProviders.url}/${serviceZipCode}/${damageType}/${shopRadiusInMiles}`
|
endpoint: url
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
getTpaProviders(zipCode, radius) {
|
getTpaProviders(zipCode, radius) {
|
||||||
|
const { carId } = this.order.vehicle;
|
||||||
const damageType = this.damage.isRepair ? 'Repair' : 'Replace';
|
const damageType = this.damage.isRepair ? 'Repair' : 'Replace';
|
||||||
const { parentAccountNumber } = this.issConfig;
|
const { parentAccountNumber } = this.issConfig;
|
||||||
|
const partsWithRecal = getTopLevelGlassPartsWithRecal(this.order.lineItems.glassParts);
|
||||||
|
const windshieldPartWithRecal = partsWithRecal?.length > 0 ? partsWithRecal[0] : null;
|
||||||
const safeliteOnly = false;
|
const safeliteOnly = false;
|
||||||
|
|
||||||
|
let url = `${endpoints.GetProviders.url}/${zipCode}/${damageType}/${radius}/${parentAccountNumber}/${safeliteOnly}/${carId}`;
|
||||||
|
if (windshieldPartWithRecal) {
|
||||||
|
url += `/${windshieldPartWithRecal.partNumber}`;
|
||||||
|
}
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
globalMethods.callHttpClient({
|
globalMethods.callHttpClient({
|
||||||
method: endpoints.GetProviders.method,
|
method: endpoints.GetProviders.method,
|
||||||
endpoint: `${endpoints.GetProviders.url}/${zipCode}/${damageType}/${radius}/${parentAccountNumber}/${safeliteOnly}`
|
endpoint: url
|
||||||
}).then((response) => resolve(response), (error) => reject(error));
|
}).then((response) => resolve(response), (error) => reject(error));
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
@ -1287,6 +1306,7 @@ export const useMainStore = defineStore({
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const params = buildURLSearchParams({
|
const params = buildURLSearchParams({
|
||||||
|
applicationName: applicationConfig.APPLICATION_NAME,
|
||||||
parentAccountNumber,
|
parentAccountNumber,
|
||||||
referralSequenceNumber,
|
referralSequenceNumber,
|
||||||
zip: serviceZipCode,
|
zip: serviceZipCode,
|
||||||
|
|
@ -1480,7 +1500,7 @@ export const useMainStore = defineStore({
|
||||||
referralSequenceNumber: this.order.referralSequenceNumber,
|
referralSequenceNumber: this.order.referralSequenceNumber,
|
||||||
eon: this.order.eon,
|
eon: this.order.eon,
|
||||||
submitToMainframe: !!this.order.referralNumber,
|
submitToMainframe: !!this.order.referralNumber,
|
||||||
createWorkOrderNumberForPIA: createWorkOrderNumberForPIA,
|
createWorkOrderNumberForPIA,
|
||||||
lockToken: this.order.lockToken,
|
lockToken: this.order.lockToken,
|
||||||
loadedFromDupeCheck,
|
loadedFromDupeCheck,
|
||||||
submitAfterSave: !!submitAfterSave
|
submitAfterSave: !!submitAfterSave
|
||||||
|
|
|
||||||
|
|
@ -1937,9 +1937,11 @@ describe('Store', () => {
|
||||||
// Arrange
|
// Arrange
|
||||||
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({}));
|
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({}));
|
||||||
|
|
||||||
|
const carId = getRandomString(10, 14);
|
||||||
const parentAccountNumber = getRandomString(6, 6);
|
const parentAccountNumber = getRandomString(6, 6);
|
||||||
store.issConfig.parentAccountNumber = parentAccountNumber;
|
store.issConfig.parentAccountNumber = parentAccountNumber;
|
||||||
store.order.damage.isRepair = isRepair;
|
store.order.damage.isRepair = isRepair;
|
||||||
|
store.order.vehicle.carId = carId;
|
||||||
const zipCode = getRandomString(6, 6);
|
const zipCode = getRandomString(6, 6);
|
||||||
const radius = getRandomInt(5, 100);
|
const radius = getRandomInt(5, 100);
|
||||||
const expectedEndpoint = [
|
const expectedEndpoint = [
|
||||||
|
|
@ -1948,7 +1950,8 @@ describe('Store', () => {
|
||||||
damageType,
|
damageType,
|
||||||
radius,
|
radius,
|
||||||
parentAccountNumber,
|
parentAccountNumber,
|
||||||
'false'
|
'false',
|
||||||
|
carId
|
||||||
].join('/');
|
].join('/');
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue