From 7849694667139dcb0db8f5533c490d6c63307bf1 Mon Sep 17 00:00:00 2001 From: Bill Richardson Date: Thu, 11 Jul 2024 12:21:33 -0400 Subject: [PATCH] Updates for calculating highest fully completed package tier Misc linting updates as well - service-package component all linting --- .../service-package-question.vue | 60 +++++-------------- .../service-packages/service-packages.vue | 16 ++--- 2 files changed, 23 insertions(+), 53 deletions(-) diff --git a/src/layouts/service-packages/service-package-question/service-package-question.vue b/src/layouts/service-packages/service-package-question/service-package-question.vue index 06a97fdf..bad1f443 100644 --- a/src/layouts/service-packages/service-package-question/service-package-question.vue +++ b/src/layouts/service-packages/service-package-question/service-package-question.vue @@ -19,6 +19,7 @@ import partTypeStrings from '@/constants/part-type-strings'; import { useMainStore } from '@/store'; import allGlassPartsAndItemsHavePrices from '@/layouts/service-packages/service-package-helper/service-package-helper'; import { getPriceOfLineItem } from '@/helpers/price-calculator'; +import { getHighestFullySatisfiedTier } from '@/helpers/service-package-helper.js'; const glassLocations = damageLocationsSelected; @@ -40,7 +41,10 @@ export default { groupName: String, validationRules: String, isRequired: Boolean, - availableLineItems: [] + availableLineItems: { + type: Array, + default: () => [] + } }, emits: ['vapsItemsSelected'], data() { @@ -212,51 +216,15 @@ export default { return vapsPrice; }, selectDefaultPackage() { - const vapsFromStore = store.order.lineItems.vaps; - let lowestTierForPackage = packageNames.TIER_ONE; - if (vapsFromStore?.length > 0) { - vapsFromStore.every((vapsItem) => { - const lowestTierForThisItem = this.getLowestTierForThisItem(vapsItem); - if (lowestTierForThisItem === packageNames.TIER_THREE) { - lowestTierForPackage = packageNames.TIER_THREE; - return false; - } if (lowestTierForThisItem === packageNames.TIER_TWO) { - lowestTierForPackage = packageNames.TIER_TWO; - return true; - } - return true; - }); - } - this.selectedPackageName = lowestTierForPackage; - }, - - getLowestTierForThisItem(vapsItem) { - let lowestTierForThisItem = null; - switch (vapsItem.partType) { - case partTypeStrings.FRONT_WIPER: - if (this.frontWipersApplicableForTierThree) { - lowestTierForThisItem = packageNames.TIER_THREE; - } - if (this.frontWipersApplicableForTierTwo) { - lowestTierForThisItem = packageNames.TIER_TWO; - } - break; - case partTypeStrings.REAR_WIPER: - if (this.rearWiperApplicableForTierThree) { - lowestTierForThisItem = packageNames.TIER_THREE; - } - if (this.rearWiperApplicableForTierTwo) { - lowestTierForThisItem = packageNames.TIER_TWO; - } - break; - case partTypeStrings.RAIN_DEFENSE: - if (this.rainDefenseApplicableForTierThree) { - lowestTierForThisItem = packageNames.TIER_THREE; - } - break; - default: - } - return lowestTierForThisItem; + const { glassToReplace, isRepair } = store.order.damage; + const { vaps } = store.order.lineItems; + const defaultTier = getHighestFullySatisfiedTier( + glassToReplace ?? [], + this.availableLineItems, + isRepair, + vaps ?? [] + ); + this.selectedPackageName = defaultTier; }, getVapsLineItemsForSelectedPackage(packageName) { const vapsLineItemsForSelectedPackage = []; diff --git a/src/layouts/service-packages/service-packages.vue b/src/layouts/service-packages/service-packages.vue index f0a9b527..0849ef35 100644 --- a/src/layouts/service-packages/service-packages.vue +++ b/src/layouts/service-packages/service-packages.vue @@ -3,7 +3,7 @@ ref="theForm" v-slot="{ meta }" @submit="onSubmit" - @invalid-submit="onInvalidSubmit"> + @invalidSubmit="onInvalidSubmit">
@@ -50,8 +50,8 @@ ref="RearWiperModal" cmsWidgetName="RearWiperModal" /> + ref="RecalModal" + cmsWidgetName="RecalModal" />
@@ -72,7 +72,6 @@ import allGlassPartsAndItemsHavePrices from '@/layouts/service-packages/service- import globalRules from '@/constants/global-rules'; import servicePackageQuestion from '@/layouts/service-packages/service-package-question/service-package-question.vue'; import issPageValues from '@/router/router-constants/issPage-values'; -import bailoutCode from '@/constants/bailoutCode'; import bailoutMessage from '@/constants/bailoutMessage'; const store = useMainStore(); @@ -143,9 +142,7 @@ export default { if (!hasBailedOut) { next((vm) => { vm.setCmsContent(resultMap.cmsContent); - vm.pricedGlassParts = clonedGlassParts; - vm.supportingItems = resultMap.supportingItems; - vm.availableLineItems = pricingResults; + vm.setData(clonedGlassParts, resultMap.supportingItems, pricingResults); }); } }, @@ -185,6 +182,11 @@ export default { && store.order.lineItems.glassParts.length > 0)) ); }, + setData(clonedGlassParts, supportingItems, pricingResults) { + this.pricedGlassParts = clonedGlassParts; + this.supportingItems = supportingItems; + this.availableLineItems = pricingResults; + }, vapsItemsSelectedAction(vapsItemsSelected) { this.selectedVaps = vapsItemsSelected; },