Merge pull request #2029 from Safelite/feature/csr-2149

Update calls for service location page
This commit is contained in:
chloeherdsafelite 2024-10-16 10:00:32 -04:00 committed by GitHub
commit a71f5562dc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 37 additions and 6 deletions

View file

@ -50,3 +50,11 @@ export function getItemsWithoutRecalParts(lineItems) {
return childrenFiltered; return childrenFiltered;
} }
export function getTopLevelPartsWithRecal(lineItems) {
if (!lineItems) {
return null;
}
return lineItems.filter((li) => isRecalPartOrHasChildRecalPart(li));
}

View file

@ -41,7 +41,7 @@ import {
coverageTypeValue, coverageTypeValue,
coverageTypeEnum, coverageTypeEnum,
} from "@/constants/insurance"; } from "@/constants/insurance";
import { containsRecalParts } from "@/helpers/recal-helper"; import { containsRecalParts, getTopLevelPartsWithRecal } from "@/helpers/recal-helper";
import { externalParameterStatus } from "@/constants/external-parameters"; import { externalParameterStatus } from "@/constants/external-parameters";
import { experimentSettings } from "@/constants/experiments"; import { experimentSettings } from "@/constants/experiments";
import experimentMixin from "@/mixins/experiment-mixin.js"; import experimentMixin from "@/mixins/experiment-mixin.js";
@ -1622,16 +1622,19 @@ export const actions = {
}, },
getServiceabilityDetails(context, { payload: { serviceZipCode }, pageNameToLog }) { 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) => ({ (lineItem) => ({
partNumber: lineItem.partNumber, partNumber: lineItem.partNumber,
recalibrationType: lineItem.recalibrationType ? escapeRecalibrationType(lineItem.recalibrationType) : undefined,
}) })
); );
var lineItems = null; var lineItems = null;
if (lineItemsWithOnlyPartNumbers) { if (partialLineItemsObjects) {
lineItems = buildQueryStringParameterFromArrayOfComplexObjects( lineItems = buildQueryStringParameterFromArrayOfComplexObjects(
lineItemsWithOnlyPartNumbers, partialLineItemsObjects,
"lineItems" "lineItems"
); );
} }
@ -1646,7 +1649,12 @@ export const actions = {
"glassPieces" "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) { if (lineItems) {
endPoint += `&${lineItems}`; endPoint += `&${lineItems}`;
} }
@ -1665,11 +1673,26 @@ export const actions = {
getProviders(context, { payload: { serviceZipCode }, pageNameToLog }) { getProviders(context, { payload: { serviceZipCode }, pageNameToLog }) {
const damageType = context.getters.damage.isRepair ? "Repair" : "Replace"; 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; const shopRadiusInMiles = 100;
let url = `${endpoints.GetProviders.url}/${serviceZipCode}/${damageType}/${shopRadiusInMiles}/${accountNumber}/true/${carId}`;
if (windshieldPartWithRecal) {
url += `/${windshieldPartWithRecal.partNumber}`;
}
return globalMethods.callHttpClient({ return globalMethods.callHttpClient({
method: endpoints.GetProviders.method, method: endpoints.GetProviders.method,
endpoint: `${endpoints.GetProviders.url}/${serviceZipCode}/${damageType}/${shopRadiusInMiles}`, endpoint: url,
logApiCall: true, logApiCall: true,
pageNameToLog: pageNameToLog, pageNameToLog: pageNameToLog,
}); });