diff --git a/src/layouts/payment-method/add-vaps-modal-buttons/add-vaps-modal-buttons.vue b/src/layouts/payment-method/add-vaps-modal-buttons/add-vaps-modal-buttons.vue index 3fc426d63..b02444f24 100644 --- a/src/layouts/payment-method/add-vaps-modal-buttons/add-vaps-modal-buttons.vue +++ b/src/layouts/payment-method/add-vaps-modal-buttons/add-vaps-modal-buttons.vue @@ -3,30 +3,49 @@
@@ -36,6 +55,7 @@ import buttonQuestion from "@/digital-components/button-question/button-question"; import addVapsButton from "./add-vaps-button/add-vaps-button"; import contentGroupModal from "@/fmg-components/content-group-modal/content-group-modal"; +import checkboxQuestion from "@/digital-components/checkbox-question/checkbox-question"; export default { name: "add-vaps-modal-buttons", @@ -47,26 +67,47 @@ export default { data() { return { addVapsButton: addVapsButton, + selectedFrontWipers: null, + selectedRearWipers: null, }; }, methods: { openModal(modalName) { this.$refs[modalName].openModal(); }, - addToCart(modalName, part) { - const vapsItems = this.currentCartItems.vaps; - const alreadyInVaps = vapsItems.some((item) => { + addRainDefenseToCart(modalName, part) { + const alreadyInVaps = this.currentCartItems.vaps.some((item) => { return item.partType === part.partType; }); if (!alreadyInVaps) { - if (part.subItems) { - // for wipers, a "combined" part (w/ subItems) - part.subItems.forEach((part) => { + this.currentCartItems.vaps.push(part); + } + this.$refs[modalName].closeModal(); + }, + addWipersToCart(modalName, part) { + const frontWipersAlreadyInVaps = this.currentCartItems.vaps.some((item) => { + return item.partType === part.frontWiperLineItems[0].partType; + }); + const rearWipersAlreadyInVaps = this.currentCartItems.vaps.some((item) => { + return item.partType === part.rearWiperLineItems[0]?.partType; + }); + + if (!this.wipersItem.priceRangeText?.length > 0) { + this.selectedFrontWipers = true; // set as true if front wipers is only option + } + if (!frontWipersAlreadyInVaps && this.selectedFrontWipers) { + if (part.frontWiperLineItems) { + // for wipers, a "combined" part (frontWiperLineItems) + part.frontWiperLineItems.forEach((part) => { + this.currentCartItems.vaps.push(part); + }); + } + } + if (!rearWipersAlreadyInVaps && this.selectedRearWipers) { + if (part.rearWiperLineItems) { + part.rearWiperLineItems.forEach((part) => { this.currentCartItems.vaps.push(part); }); - } else { - // for rain defense, a "single" part (w/o subItems) - this.currentCartItems.vaps.push(part); } } this.$refs[modalName].closeModal(); @@ -107,25 +148,46 @@ export default { return item.partType.includes("WIPER"); }); let wiperLineItem; + if (wiperLineItems.length === 1) { wiperLineItem = wiperLineItems[0]; - wiperLineItem.listPrice = parseFloat( + wiperLineItem.totalFrontPrice = parseFloat( wiperLineItem.laborAmount + wiperLineItem.sellingPrice + wiperLineItem.kitPrice ).toFixed(2); return wiperLineItem; } else if (wiperLineItems.length > 1) { - let combinedPrice = 0; + let totalFrontPrice = 0; + let totalRearPrice = 0; wiperLineItems?.forEach((item) => { - combinedPrice += item?.laborAmount + item?.sellingPrice + item?.kitPrice; + if (item.partType === "REAR WIPER") { + totalRearPrice += item?.laborAmount + item?.sellingPrice + item?.kitPrice; + } else { + totalFrontPrice += item?.laborAmount + item?.sellingPrice + item?.kitPrice; + } }); wiperLineItem = { description: "COMBINED ITEM", partType: "WIPERS", - subItems: [], - listPrice: parseFloat(combinedPrice).toFixed(2), + frontWiperLineItems: [], + rearWiperLineItems: [], + totalFrontPrice: parseFloat(totalFrontPrice).toFixed(2), + totalRearPrice: parseFloat(totalRearPrice).toFixed(2), + priceRangeText: "", }; wiperLineItems?.forEach((item) => { - wiperLineItem.subItems.push(item); + if (item.partType === "REAR WIPER") { + wiperLineItem.rearWiperLineItems.push(item); + const priceRanges = [ + totalFrontPrice, + totalRearPrice, + totalFrontPrice + totalRearPrice, + ]; + priceRanges.sort((a, b) => a - b); + wiperLineItem.priceRangeText = + "+$" + priceRanges[0] + " - $" + priceRanges[priceRanges.length - 1]; + } else { + wiperLineItem.frontWiperLineItems.push(item); + } }); return wiperLineItem; } @@ -134,7 +196,7 @@ export default { answersCmsData() { return this.getCmsContent(this.vapsTilesCmsName, "Answers"); }, - answersToDisplay() { + buttonsToDisplay() { const answers = []; if (!this.answersCmsData) return answers; const getAnswer = (name, answers) => { @@ -145,7 +207,11 @@ export default { }; if (this.showAddWipers) { const answer = getAnswer("WipersModal", this.answersCmsData); - answer.SubText = "+$" + this.wipersItem.listPrice; + if (this.wipersItem.priceRangeText?.length > 0) { + answer.SubText = this.wipersItem.priceRangeText; + } else { + answer.SubText = "+$" + this.wipersItem.totalFrontPrice; + } answers.push(answer); } if (this.showAddRainDefense) { @@ -159,6 +225,65 @@ export default { components: { buttonQuestion, contentGroupModal, + checkboxQuestion, }, }; + +