Merge pull request #1068 from Safelite/feature/CSR-1104

CSR-1104 | Query string parameter builder function
This commit is contained in:
scottkiener 2023-04-20 10:28:50 -04:00 committed by GitHub
commit 6b9eaf9bf4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -938,12 +938,18 @@ export const actions = {
},
getServiceabilityDetails(context, { serviceZipCode }) {
const lineItems = context.getters.order.lineItems;
const lineItemsToSend = [...lineItems.supportingItems];
const encodedLineItems = encodeURIComponent(JSON.stringify(lineItemsToSend));
const lineItemsWithOnlyPartNumbers = context.getters.order.lineItems.supportingItems.map(
(lineItem) => ({
partNumber: lineItem.partNumber,
})
);
const lineItemsToSend = buildQueryStringParameterFromArrayOfComplexObjects(
lineItemsWithOnlyPartNumbers,
"lineItems"
);
return globalMethods.callHttpClient({
method: endpoints.GetServiceabilityDetails.method,
endpoint: `${endpoints.GetServiceabilityDetails.url}?zip=${serviceZipCode}&lineItems=${encodedLineItems}`,
endpoint: `${endpoints.GetServiceabilityDetails.url}?zip=${serviceZipCode}&${lineItemsToSend}`,
});
},
@ -1674,3 +1680,14 @@ function getLineItemQueryStringForPricing(lineItems) {
})
.join("");
}
function buildQueryStringParameterFromArrayOfComplexObjects(arrayOfObjects, parameterName) {
let queryStringParameter = "";
for (let i = 0; i < arrayOfObjects.length; i++) {
for (const [key, value] of Object.entries(arrayOfObjects[i])) {
queryStringParameter += `${parameterName}[${i}].${key}=${value}&`;
}
}
// Remove trailing &
return queryStringParameter.slice(0, -1);
}