DigitalConsumer.ISS/src/helpers/damage-helper.js
DavidAtSafelite 80509bda53 We have advanced the code enough to call this one 8.5
It has more layout page linting and I have removed (really re-removed) the reduntant router parms.
2023-08-23 07:16:58 -04:00

92 lines
2.8 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'
};
// eslint-disable-next-line no-restricted-syntax
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;
// }