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;
}
export function getTopLevelPartsWithRecal(lineItems) {
if (!lineItems) {
return null;
}
return lineItems.filter((li) => isRecalPartOrHasChildRecalPart(li));
}

View file

@ -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,
});