Merge pull request #866 from Safelite/defect/digital/SSR-1632
SSR-1632 Update getServiceabilityDetails for API Changes
This commit is contained in:
commit
cb5eb6bfc1
2 changed files with 36 additions and 7 deletions
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue