Merge pull request #866 from Safelite/defect/digital/SSR-1632

SSR-1632 Update getServiceabilityDetails for API Changes
This commit is contained in:
Josh Dassinger 2024-10-16 12:40:57 -05:00 committed by GitHub
commit cb5eb6bfc1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 36 additions and 7 deletions

View file

@ -43,3 +43,24 @@ export function getTaxLineItemQueryString(lineItems, parameterName) {
+ `&${parameterName}[${index}].kitPrice=${lineItem.kitPrice}`).join('&'); + `&${parameterName}[${index}].kitPrice=${lineItem.kitPrice}`).join('&');
return queryString.length !== 0 ? `&${queryString}` : ''; return queryString.length !== 0 ? `&${queryString}` : '';
} }
export function buildURLSearchParams(data) {
const params = new URLSearchParams();
Object.entries(data).forEach(([key, value]) => {
if (Array.isArray(value)) {
value.forEach((arrayValue, index) => {
if (typeof value === 'object') {
Object.entries(arrayValue).forEach(([objectKey, objectValue]) => {
params.append(`${key}[${index}].${objectKey}`, `${objectValue}`);
});
} else {
params.append(`${key}[${index}]`, `${value}`);
}
});
} else {
params.append(key, `${value}`);
}
});
return params;
}

View file

@ -26,7 +26,7 @@ import bailoutCode from '@/constants/bailoutCode';
import partNumberStrings from '@/constants/part-number-strings'; import partNumberStrings from '@/constants/part-number-strings';
import { findLineItemIndex, getLineItemsFlattened } from '@/helpers/line-items-helper'; import { findLineItemIndex, getLineItemsFlattened } from '@/helpers/line-items-helper';
import { import {
buildQueryStringParameterFromArrayOfComplexObjects, buildQueryStringParameterFromArrayOfComplexObjects, buildURLSearchParams,
getLineItemQueryString, getLineItemQueryString,
getPartNumbersListForQueryString, getPartNumbersListForQueryString,
getTaxLineItemQueryString getTaxLineItemQueryString
@ -1276,18 +1276,26 @@ export const useMainStore = defineStore({
}, },
getServiceabilityDetails({ serviceZipCode }) { getServiceabilityDetails({ serviceZipCode }) {
const lineItems = getLineItemQueryString(this.order.lineItems.supportingItems, 'lineItems'); const { vehicle, damage, parentAccountNumber, referralSequenceNumber, lineItems } = this.order;
const { vehicle } = this.order;
const { carId } = vehicle; const { carId } = vehicle;
const { damage } = this.order;
const glassArray = convertGlassPieceNamingForApi(damage.glassToReplace); const glassArray = convertGlassPieceNamingForApi(damage.glassToReplace);
const lineItemParts = [...lineItems.glassParts, ...lineItems.supportingItems].map((part) => ({
partNumber: part.partNumber,
recalibrationType: part.recalibrationType
}));
const glassPieces = buildQueryStringParameterFromArrayOfComplexObjects(glassArray, 'glassPieces'); const params = buildURLSearchParams({
parentAccountNumber,
referralSequenceNumber,
zip: serviceZipCode,
carId,
glassPieces: glassArray,
lineItems: lineItemParts
});
return globalMethods.callHttpClient({ return globalMethods.callHttpClient({
method: endpoints.GetServiceabilityDetails.method, method: endpoints.GetServiceabilityDetails.method,
endpoint: `${endpoints.GetServiceabilityDetails.url}?zip=${serviceZipCode}&carId=${carId}${lineItems}&${glassPieces}` endpoint: `${endpoints.GetServiceabilityDetails.url}?${params.toString()}`
}); });
}, },
lookupVehicleByVin(vin) { lookupVehicleByVin(vin) {