Plug into real stored values + new logic

This commit is contained in:
Chloe Herd 2023-06-22 17:01:32 -04:00
parent 64ab3afa78
commit 6b403ac340
2 changed files with 94 additions and 1 deletions

View file

@ -7,11 +7,17 @@
<script>
import reviewBlock from "@/layouts/review/review-block/review-block";
import {
getHighestFullySatisfiedTier,
containsLineItemWithPartType,
} from "@/helpers/service-package-helper";
import { partTypeStrings } from "@/constants/part-type-strings";
export default {
name: "service-package-review",
props: {
cmsWidgetName: String,
availableLineItems: Array,
},
data() {
return {};
@ -23,12 +29,69 @@ export default {
},
computed: {
displayContent() {
return [
...this.packageName,
"-",
...this.defaultPackageText,
...this.frontWipersText,
...this.rearWipersText,
...this.rainDefenseText,
];
},
packageName() {
return [this.packageLevel];
},
defaultPackageText() {
return [
"New replacement windshield",
"Expert installation and recalibration",
"Nationwide lifetime warranty",
];
},
hasFrontWiperVAPS() {
return containsLineItemWithPartType(partTypeStrings.FRONT_WIPER, this.vaps);
},
hasRearWiperVAPS() {
return containsLineItemWithPartType(partTypeStrings.REAR_WIPER, this.vaps);
},
hasRainDefenseVAPS() {
return containsLineItemWithPartType(partTypeStrings.RAIN_DEFENSE, this.vaps);
},
packageLevel() {
return getHighestFullySatisfiedTier(
this.glassToReplace,
this.availableLineItems,
this.isRepair,
this.vaps
);
},
frontWipersText() {
if (this.hasFrontWiperVAPS) {
return ["New front wiper blades"];
}
return [];
},
rearWipersText() {
if (this.hasRearWiperVAPS) {
return ["New rear wiper blade"];
}
return [];
},
rainDefenseText() {
if (this.hasRainDefenseVAPS) {
return ["Rain Defense treatment"];
}
return [];
},
glassToReplace() {
return this.$store.getters.order.damage.glassToReplace;
},
isRepair() {
return this.$store.getters.order.damage.isRepair;
},
vaps() {
return this.$store.getters.lineItems.vaps;
},
},
components: {
reviewBlock,

View file

@ -55,6 +55,7 @@
<servicePackageReview
cmsWidgetName="ServicePackageReviewWidget"
:availableLineItems="availableLineItems"
@edit-clicked="editServicePackage" />
</div>
@ -83,12 +84,19 @@ import servicePackageReview from "@/layouts/review/review-sections/service-packa
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
import { settleAllPromises } from "@/helpers/layout-helper";
import baseMixin from "@/mixins/base-mixin.js";
import { storeActions } from "@/constants/store-actions";
export default {
name: "review",
async beforeRouteEnter(to, from, next) {
// Call APIs
const cmsContentPromise = fetchCmsContentForPage(to.query.fmgPage);
// Get rain defense and wiper availability for package review section.
const wipersPromise = baseMixin.methods.dispatchStoreAction(storeActions.GET_WIPERS);
const rainDefensePromise = baseMixin.methods.dispatchStoreAction(
storeActions.GET_RAIN_DEFENSE
);
// Settle promises and get results
const promiseResultMap = [
@ -96,16 +104,30 @@ export default {
resultKey: "cmsContent",
promise: cmsContentPromise,
},
{
resultKey: "wipers",
promise: wipersPromise,
},
{
resultKey: "rainDefense",
promise: rainDefensePromise,
},
];
const resultMap = await settleAllPromises(promiseResultMap);
next((vm) => {
vm.setCmsContent(resultMap.cmsContent);
vm.availableWipers = resultMap.wipers;
vm.availableRainDefense = [resultMap.rainDefense];
});
},
data() {
return {};
return {
availableWipers: null,
availableRainDefense: null,
};
},
methods: {
arePagePrerequisitesValid() {
@ -143,6 +165,14 @@ export default {
damageInfo() {
return this.$store.getters.damage;
},
availableLineItems() {
return [
...(this.$store.getters.lineItems.glassParts ?? []),
...(this.$store.getters.lineItems.supportingItems ?? []),
...(this.availableWipers ?? []),
...(this.availableRainDefense ?? []),
];
},
},
components: {
funnelHeader,