DigitalConsumer.FixMyGlass/src/helpers/damage-helper.js
2022-10-28 10:10:11 -04:00

72 lines
1.9 KiB
JavaScript

import store from "@/store";
import baseMixin from "@/mixins/base-mixin.js";
import { storeActions } from "@/constants/store-actions";
export function getDamageString() {
// If it's a repair it's always a windshield.
const isRepair = store.getters.damage.isRepair;
if (isRepair) {
return "windshield";
}
const damageLocations = store.getters.damage.glassToReplace;
let returnString;
if (!damageLocations) {
return;
}
if (damageLocations.length > 1) {
returnString = "match";
} else {
switch (damageLocations[0]?.glassLocation) {
case "Windshield":
returnString = "windshield";
break;
case "Driver":
case "Passenger":
returnString = "side window";
break;
case "Rear":
returnString = "rear window";
}
}
return returnString;
}
export function getIsWindshieldOnly() {
const damageLocations = store.getters.damage.glassToReplace;
const returnString =
damageLocations.length === 1 && damageLocations[0]?.glassLocation === "Windshield"
? "windshield"
: "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;
}