diff --git a/src/layouts/service-location/service-zip-modal-question/service-zip-modal-question.vue b/src/layouts/service-location/service-zip-modal-question/service-zip-modal-question.vue index 16491057..acc91141 100644 --- a/src/layouts/service-location/service-zip-modal-question/service-zip-modal-question.vue +++ b/src/layouts/service-location/service-zip-modal-question/service-zip-modal-question.vue @@ -38,10 +38,7 @@ import serviceZipQuestion from "@/layouts/service-location/service-zip-modal-que import modal from "@/digital-components/modal/modal.vue" import alert from "@/ux-components/alert/alert"; -// import { -// getPricedMobileFeePart, -// getServiceabilityDetails, -// } from "@/layouts/service-location/helpers/service-location-helper/service-location-helper"; +import { getServiceabilityDetails } from "@/helpers/service-location-helper"; export default { name: "service-zip-modal-question", @@ -128,33 +125,30 @@ export default { this.internalModel.serviceZip = this.modelValue.serviceZip; this.resetsOnZipInput(); }, - // async setZipCode() { - // if (this.internalModel.serviceZip !== this.modelValue.serviceZip) { - // this.resetAlerts(); - // const zipCodeData = await this.getZipCodeData(this.internalModel.serviceZip); - // if (!zipCodeData.isValid) { - // this.displayInvalidZipAlert = true; - // this.focusOnZipInput(); - // this.resetModalButtonStyle(); - // } else { - // this.internalModel.serviceZipState = zipCodeData.serviceZipState; - // // retrieve mobile fee part - // const serviceZipCode = this.internalModel.serviceZip; - // const mobileFeePart = await getPricedMobileFeePart(serviceZipCode); - // // retrieve serviceability details - // const serviceabilityDetails = await getServiceabilityDetails(serviceZipCode); - // // update content related to service zip code - // this.$emit("updated-mobile-fee-part", mobileFeePart); - // this.$emit("updated-serviceability", serviceabilityDetails.data); - // this.$emit("updated-contains-military-base", zipCodeData.containsMilitaryBase); - // // Update the page level model - // this.$emit("update:modelValue", this.internalModel); - // this.closeModal(); - // } - // } else { - // this.closeModal(); - // } - // }, + async setZipCode() { + if (this.internalModel.serviceZip !== this.modelValue.serviceZip) { + this.resetAlerts(); + const zipCodeData = await this.getZipCodeData(this.internalModel.serviceZip); + if (!zipCodeData.isValid) { + this.displayInvalidZipAlert = true; + this.focusOnZipInput(); + this.resetModalButtonStyle(); + } else { + this.internalModel.serviceZipState = zipCodeData.serviceZipState; + const serviceZipCode = this.internalModel.serviceZip; + // retrieve serviceability details + const serviceabilityDetails = await getServiceabilityDetails(serviceZipCode); + // update content related to service zip code + this.$emit("updated-serviceability", serviceabilityDetails.data); + this.$emit("updated-contains-military-base", zipCodeData.containsMilitaryBase); + // Update the page level model + this.$emit("update:modelValue", this.internalModel); + this.closeModal(); + } + } else { + this.closeModal(); + } + }, }, watch: { modelValue(newValue) { diff --git a/src/mixins/base-mixin.js b/src/mixins/base-mixin.js index 3b3abe33..628fa330 100644 --- a/src/mixins/base-mixin.js +++ b/src/mixins/base-mixin.js @@ -27,6 +27,19 @@ export default { savePageDataToStore(page, data) { useMainStore().updatePageData({ page: page, data: data}); }, + async getZipCodeData(zipCode) { + const serviceZipValidationResponse = await useMainStore().validateZip( + { zip: zipCode } + ); + + return { + containsMilitaryBase: serviceZipValidationResponse.data.containsMilitaryBase, + isValid: serviceZipValidationResponse.data.isValid, + isServiceable: serviceZipValidationResponse.data.isServiceable, + state: serviceZipValidationResponse.data.state, + zipCodeCtu: serviceZipValidationResponse.data.zipCodeCtu, + }; + }, }, computed: { // store will be accessible globally as its id + 'Store'