From 377428cc2b9520c8ad48cb564a111c176ad56ba1 Mon Sep 17 00:00:00 2001 From: Johan Gunawan Date: Wed, 11 Jan 2023 15:34:39 -0500 Subject: [PATCH] Add isGlassAvailableForCarId method The method will be used on all vehicle lookup pages (by manual vin, by license plate, by address). --- src/helpers/damage-helper.js | 63 ++++++++++++++++++++---------------- 1 file changed, 35 insertions(+), 28 deletions(-) diff --git a/src/helpers/damage-helper.js b/src/helpers/damage-helper.js index 09b59e21..44ee2d72 100644 --- a/src/helpers/damage-helper.js +++ b/src/helpers/damage-helper.js @@ -35,6 +35,41 @@ export function getDamageString() { return ''; } +function hasMatchingReplacementOption(vehicleDamageOptions, selectedGlassToReplace) { + let result = true; + const optionsMap = { + Windshield: 'windshieldOptions', + Driver: 'driverSideOptions', + Passenger: 'passengerSideOptions', + Rear: 'backGlassOptions', + }; + + for (const glassToReplace of selectedGlassToReplace) { + const propName = optionsMap[glassToReplace.glassLocation]; + const { availableReplacementOptions } = vehicleDamageOptions[propName]; + + if (!availableReplacementOptions.includes(glassToReplace.glassName)) { + result = false; + break; + } + } + + return result; +} + +export async function isGlassAvailableForCarId(carId) { + const mainStore = useMainStore(); + + try { + const vehicleDamageOptionsResponse = await mainStore.getDamageOptions(carId); + const selectedGlassToReplace = mainStore.damage.glassToReplace; + + return hasMatchingReplacementOption(vehicleDamageOptionsResponse.data, selectedGlassToReplace); + } catch (error) { + return false; + } +} + /** * Commented code are copied directly from DigitalConsumer.FixMyGlass * and have not been adjusted for ISS. @@ -54,31 +89,3 @@ export function getDamageString() { // : "glass"; // return returnString; // } - -// export async function isGlassAvailableForCarId(carId) { -// const newGlassOptions = await baseMixin.methods.dispatchStoreAction( -// storeActions.GET_DAMAGE_OPTIONS, -// { carId: carId } -// ); - -// const currentGlassOptions = store.getters.damage.glassToReplace; - -// const optionsMap = { -// Windshield: "windshieldOptions", -// Driver: "driverSideOptions", -// Passenger: "passengerSideOptions", -// Rear: "backGlassOptions", -// }; - -// for (const option of currentGlassOptions) { -// if ( -// !newGlassOptions.data[ -// optionsMap[option.glassLocation] -// ].availableReplacementOptions.includes(option.glassName) -// ) { -// return false; -// } -// } - -// return true; -// }