From d5378109c623aeabd6caf35698f6500406b84399 Mon Sep 17 00:00:00 2001 From: Chloe Herd Date: Tue, 15 Oct 2024 17:02:03 -0400 Subject: [PATCH] Update calls for service location page --- src/helpers/recal-helper.js | 8 ++++++++ src/store/index.js | 35 +++++++++++++++++++++++++++++------ 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/src/helpers/recal-helper.js b/src/helpers/recal-helper.js index fa33e7849..c73755e8f 100644 --- a/src/helpers/recal-helper.js +++ b/src/helpers/recal-helper.js @@ -50,3 +50,11 @@ export function getItemsWithoutRecalParts(lineItems) { return childrenFiltered; } + +export function getTopLevelPartsWithRecal(lineItems) { + if (!lineItems) { + return null; + } + + return lineItems.filter((li) => isRecalPartOrHasChildRecalPart(li)); +} diff --git a/src/store/index.js b/src/store/index.js index d865f756c..437776755 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -41,7 +41,7 @@ import { coverageTypeValue, coverageTypeEnum, } from "@/constants/insurance"; -import { containsRecalParts } from "@/helpers/recal-helper"; +import { containsRecalParts, getTopLevelPartsWithRecal } from "@/helpers/recal-helper"; import { externalParameterStatus } from "@/constants/external-parameters"; import { experimentSettings } from "@/constants/experiments"; import experimentMixin from "@/mixins/experiment-mixin.js"; @@ -1622,16 +1622,19 @@ export const actions = { }, getServiceabilityDetails(context, { payload: { serviceZipCode }, pageNameToLog }) { - const lineItemsWithOnlyPartNumbers = context.getters.order.lineItems.supportingItems?.map( + const escapeRecalibrationType = (rt) => rt.split("&").join("%26"); + + const partialLineItemsObjects = context.getters.order.lineItems.glassParts?.map( (lineItem) => ({ partNumber: lineItem.partNumber, + recalibrationType: lineItem.recalibrationType ? escapeRecalibrationType(lineItem.recalibrationType) : undefined, }) ); var lineItems = null; - if (lineItemsWithOnlyPartNumbers) { + if (partialLineItemsObjects) { lineItems = buildQueryStringParameterFromArrayOfComplexObjects( - lineItemsWithOnlyPartNumbers, + partialLineItemsObjects, "lineItems" ); } @@ -1646,7 +1649,12 @@ export const actions = { "glassPieces" ); - var endPoint = `${endpoints.GetServiceabilityDetails.url}?zip=${serviceZipCode}&carId=${carId}`; + const parentAccountNumber = + context.getters.order.payment.parentAccountNumber ?? + applicationConfig.CASH_PARENT_ACCOUNT_NUMBER; + const referralSequenceNumber = context.getters.order.referralSequenceNumber; + + var endPoint = `${endpoints.GetServiceabilityDetails.url}?zip=${serviceZipCode}&carId=${carId}&parentAccountNumber=${parentAccountNumber}&referralSequenceNumber=${referralSequenceNumber}`; if (lineItems) { endPoint += `&${lineItems}`; } @@ -1665,11 +1673,26 @@ export const actions = { getProviders(context, { payload: { serviceZipCode }, pageNameToLog }) { const damageType = context.getters.damage.isRepair ? "Repair" : "Replace"; + const accountNumber = + context.getters.order.payment.parentAccountNumber ?? + applicationConfig.CASH_PARENT_ACCOUNT_NUMBER; + const carId = context.getters.order.vehicle.carId; + const partsWithRecal = getTopLevelPartsWithRecal( + context.getters.order.lineItems.glassParts + ); + const windshieldPartWithRecal = partsWithRecal?.length > 0 ? partsWithRecal[0] : null; + const shopRadiusInMiles = 100; + let url = `${endpoints.GetProviders.url}/${serviceZipCode}/${damageType}/${shopRadiusInMiles}/${accountNumber}/true/${carId}`; + + if (windshieldPartWithRecal) { + url += `/${windshieldPartWithRecal.partNumber}`; + } + return globalMethods.callHttpClient({ method: endpoints.GetProviders.method, - endpoint: `${endpoints.GetProviders.url}/${serviceZipCode}/${damageType}/${shopRadiusInMiles}`, + endpoint: url, logApiCall: true, pageNameToLog: pageNameToLog, });