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 }) { getServiceabilityDetails(context, { serviceZipCode }) {
const lineItems = context.getters.order.lineItems; const lineItemsWithOnlyPartNumbers = context.getters.order.lineItems.supportingItems.map(
const lineItemsToSend = [...lineItems.supportingItems]; (lineItem) => ({
const encodedLineItems = encodeURIComponent(JSON.stringify(lineItemsToSend)); partNumber: lineItem.partNumber,
})
);
const lineItemsToSend = buildQueryStringParameterFromArrayOfComplexObjects(
lineItemsWithOnlyPartNumbers,
"lineItems"
);
return globalMethods.callHttpClient({ return globalMethods.callHttpClient({
method: endpoints.GetServiceabilityDetails.method, 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(""); .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);
}