From b613623aa0c9b349fdba2188217e9b299861e53b Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Wed, 30 Nov 2022 10:32:16 -0500 Subject: [PATCH] CSR-774 | Default package selection Fixed a bug with save/load session --- .../service-package-question.vue | 70 ++++++++++++++++--- src/store/index.js | 4 +- 2 files changed, 61 insertions(+), 13 deletions(-) diff --git a/src/layouts/quote/service-package-question/service-package-question.vue b/src/layouts/quote/service-package-question/service-package-question.vue index 99982004b..712d7166a 100644 --- a/src/layouts/quote/service-package-question/service-package-question.vue +++ b/src/layouts/quote/service-package-question/service-package-question.vue @@ -4,7 +4,7 @@ :groupName="groupName" buttonTypeString="servicePackageRadio" :buttonTypeObject="servicePackageRadio" - v-model="selectedValues" + v-model="selectedPackageName" isRequired /> @@ -35,19 +35,23 @@ export default { data() { return { servicePackageRadio: servicePackageRadio, + selectedPackageName: null, }; }, - computed: { - selectedValues: { - get: function () { - return this.modelValue; - }, - set: function (newValue) { - const VapsProductsInSelectedPackage = - this.getVapsLineItemsForSelectedPackage(newValue); - this.$emit("update:modelValue", VapsProductsInSelectedPackage); - }, + watch: { + availableLineItems() { + console.log('supportingItems from store', this.$store.getters.lineItems.supportingItems); + if(this.$store.getters.lineItems.vaps) { + this.selectDefaultPackage(); + } }, + selectedPackageName(newValue) { + const VapsProductsInSelectedPackage = + this.getVapsLineItemsForSelectedPackage(newValue); + this.$emit("update:modelValue", VapsProductsInSelectedPackage); + }, + }, + computed: { nullSafeAvailableLineItems() { return this.availableLineItems ?? []; }, @@ -208,6 +212,50 @@ export default { }); return vapsPrice; }, + selectDefaultPackage() { + const vapsFromStore = this.$store.getters.lineItems.vaps; + let lowestTierForPackage = packageNames.TIER_ONE; + vapsFromStore.every(vapsItem => { + let lowestTierForThisItem = this.getLowestTierForThisItem(vapsItem); + if (lowestTierForThisItem === packageNames.TIER_THREE) { + lowestTierForPackage = packageNames.TIER_THREE; + return false; + } else if (lowestTierForThisItem === packageNames.TIER_TWO) { + lowestTierForPackage = packageNames.TIER_TWO; + return true; + } else { + 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; + } + return lowestTierForThisItem; + }, getVapsLineItemsForSelectedPackage(packageName) { const vapsLineItemsForSelectedPackage = []; if (packageName === packageNames.TIER_TWO) { diff --git a/src/store/index.js b/src/store/index.js index fc7c02402..29bd7c0c6 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -356,7 +356,7 @@ export const mutations = { state.order.lineItems.glassParts = sessionInformation.order.lineItems.glassParts; state.order.lineItems.supportingItems = sessionInformation.order.lineItems.supportingItems; - state.order.lineItems.vapsItems = sessionInformation.order.lineItems.vapsItems; + state.order.lineItems.vaps = sessionInformation.order.lineItems.vaps; state.order.lineItems.serverData = sessionInformation.order.lineItems.serverData; state.order.accountNumber = sessionInformation.order.accountNumber; state.order.providerNumber = sessionInformation.order.providerNumber; @@ -1011,7 +1011,7 @@ export const actions = { lineItems: { glassParts: lineItems.glassParts, supportingItems: lineItems.supportingItems, - vapsItems: lineItems.vapsItems, + vaps: lineItems.vaps, serverData: lineItems.serverData, }, payment: {