The method will be used on all vehicle lookup pages (by manual vin, by license plate, by address).
91 lines
2.6 KiB
JavaScript
91 lines
2.6 KiB
JavaScript
import damageCustomLabels from '@/constants/damage-custom-labels';
|
|
import { damageLocationsSelected } from '@/constants/damage-locations-selected';
|
|
import { useMainStore } from '@/store';
|
|
|
|
export function getDamageString() {
|
|
const mainStore = useMainStore();
|
|
|
|
const { isRepair } = mainStore.damage;
|
|
const damageLocations = mainStore.damage.glassToReplace;
|
|
|
|
if (isRepair || !damageLocations || !Array.isArray(damageLocations)) {
|
|
return '';
|
|
}
|
|
|
|
if (damageLocations.length > 1) {
|
|
return damageCustomLabels.MATCH;
|
|
}
|
|
|
|
const { glassLocation } = damageLocations[0];
|
|
if (glassLocation) {
|
|
switch (glassLocation) {
|
|
case damageLocationsSelected.WINDSHIELD:
|
|
return damageCustomLabels.WINDSHIELD;
|
|
case damageLocationsSelected.DRIVER:
|
|
case damageLocationsSelected.PASSENGER:
|
|
return damageCustomLabels.SIDE_WINDOW;
|
|
case damageLocationsSelected.REAR:
|
|
return damageCustomLabels.REAR_WINDOW;
|
|
default:
|
|
return '';
|
|
}
|
|
}
|
|
|
|
// No condition is matched
|
|
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.
|
|
*/
|
|
|
|
// import store from "@/store";
|
|
// import baseMixin from "@/mixins/base-mixin.js";
|
|
// import { storeActions } from "@/constants/store-actions";
|
|
|
|
// export function getIsWindshieldOnly() {
|
|
// const damageLocations = store.getters.damage.glassToReplace;
|
|
// const returnString =
|
|
// damageLocations &&
|
|
// damageLocations.length === 1 &&
|
|
// damageLocations[0]?.glassLocation === "Windshield"
|
|
// ? "windshield"
|
|
// : "glass";
|
|
// return returnString;
|
|
// }
|