diff --git a/src/layouts/schedule-page/schedule-page.vue b/src/layouts/schedule-page/schedule-page.vue index e2d008f8..ee25c354 100644 --- a/src/layouts/schedule-page/schedule-page.vue +++ b/src/layouts/schedule-page/schedule-page.vue @@ -90,16 +90,16 @@ import { AppointmentTypeStrings, GET_MOBILE_TIME_SLOTS, GET_SHOP_TIME_SLOTS, - PREMIUM_FEE_PART_TYPE, + PREMIUM_FEE_PART_TYPE } from '@/constants/schedule-constants.js'; import { fetchCmsContentForPage, - splitCopyOnCMSPlaceHolder, + splitCopyOnCMSPlaceHolder } from '@/helpers/cms-content-helper'; import { calcDaysBetweenDates, convertDateStringToDate, - sumDateString, + sumDateString } from '@/helpers/date-helper'; import settleAllPromises from '@/helpers/layout-helper'; import { Form, defineRule } from 'vee-validate'; @@ -156,16 +156,16 @@ const getAvailableDates = async ( } if ( - appointmentType === AppointmentTypeStrings.MOBILE || - appointmentType === - AppointmentTypeStrings.MOBILE_NOT_ITAC_AND_NOT_NOCOMP + appointmentType === AppointmentTypeStrings.MOBILE + || appointmentType + === AppointmentTypeStrings.MOBILE_NOT_ITAC_AND_NOT_NOCOMP ) { storeActionConfig = { storeAction: GET_MOBILE_TIME_SLOTS, payload: { startDate: apiStartDate, - endDate: apiEndDate, - }, + endDate: apiEndDate + } }; } else { storeActionConfig = { @@ -174,16 +174,15 @@ const getAvailableDates = async ( startDate: apiStartDate, endDate: apiEndDate, shopAppointmentType: appointmentType, - providerNumber, - }, + providerNumber + } }; } - if (apiStartDate < apiEndDate) - storeActionConfigs.push(storeActionConfig); + if (apiStartDate < apiEndDate) storeActionConfigs.push(storeActionConfig); } const timeSlotsResponsesData = { - days: [], + days: [] }; function compareDayStrings(a, b) { @@ -193,33 +192,31 @@ const getAvailableDates = async ( } const makeParallelCalls = async () => { - await Promise.all( - storeActionConfigs.map(async (storeAction) => { - let timeSlotsResponse = null; - if (storeAction.storeAction === GET_SHOP_TIME_SLOTS) { - timeSlotsResponse = await useMainStore().getShopTimeSlots( - storeAction.payload.startDate, - storeAction.payload.endDate, - storeAction.payload.shopAppointmentType, - storeAction.payload.providerNumber - ); - } else { - timeSlotsResponse = await useMainStore().getMobileTimeSlots( - storeAction.payload.startDate, - storeAction.payload.endDate - ); - } + await Promise.all(storeActionConfigs.map(async (storeAction) => { + let timeSlotsResponse = null; + if (storeAction.storeAction === GET_SHOP_TIME_SLOTS) { + timeSlotsResponse = await useMainStore().getShopTimeSlots( + storeAction.payload.startDate, + storeAction.payload.endDate, + storeAction.payload.shopAppointmentType, + storeAction.payload.providerNumber + ); + } else { + timeSlotsResponse = await useMainStore().getMobileTimeSlots( + storeAction.payload.startDate, + storeAction.payload.endDate + ); + } - timeSlotsResponsesData.estimatedServiceMinutesMinimum = + timeSlotsResponsesData.estimatedServiceMinutesMinimum = timeSlotsResponse.data.estimatedServiceMinutesMinimum; - timeSlotsResponsesData.estimatedServiceMinutesMaximum = + timeSlotsResponsesData.estimatedServiceMinutesMaximum = timeSlotsResponse.data.estimatedServiceMinutesMaximum; - timeSlotsResponsesData.days = [ - ...timeSlotsResponsesData.days, - ...timeSlotsResponse.data.days, - ]; - }) - ); + timeSlotsResponsesData.days = [ + ...timeSlotsResponsesData.days, + ...timeSlotsResponse.data.days + ]; + })); }; return makeParallelCalls().then(() => { @@ -240,7 +237,7 @@ export default { siteFooter, textBlock, // eslint-disable-next-line vue/no-reserved-component-names - Form, + Form }, mixins: [BaseFormMixin], async beforeRouteEnter(to, from, next) { @@ -257,7 +254,7 @@ export default { selectableDatesSetting: 'custom', initialViewRowsToShow: 5, customSelectableDatesCallback: getAvailableDates, - preSelectedDate, + preSelectedDate }); const premiumFeePromise = useMainStore().getMobilePremiumFee(); @@ -278,29 +275,27 @@ export default { const promiseResultMap = [ { resultKey: 'cmsContent', - promise: cmsContentPromise, + promise: cmsContentPromise }, { resultKey: 'alertReasons', - promise: alertReasonsPromise, + promise: alertReasonsPromise }, { resultKey: 'datePickerInitialData', - promise: datePickerInitialDataPromise, + promise: datePickerInitialDataPromise }, { resultKey: 'premiumFeeWithPrice', - promise: premiumFeeWithPricePromise, - }, + promise: premiumFeeWithPricePromise + } ]; // use resultMap to populate layout content. const resultMap = await settleAllPromises(promiseResultMap); next((vm) => { vm.setCmsContent(resultMap.cmsContent); - vm.$refs.datePicker.initializeComponent( - resultMap.datePickerInitialData - ); + vm.$refs.datePicker.initializeComponent(resultMap.datePickerInitialData); vm.$refs.locationAlerts.initializeComponent(resultMap.alertReasons); vm.setData( resultMap.datePickerInitialData.initialShopTimeSlotsResponse, @@ -318,7 +313,7 @@ export default { selectedDate: this.getSelectedDate(), selectedTimeSlotInfo: this.getSelectedTimeSlotInfo(), selectableDatesData: [], - mobilePremiumAppointmentFee: null, + mobilePremiumAppointmentFee: null }; }, computed: { @@ -336,13 +331,11 @@ export default { return null; } - return this.selectableDatesData.days?.find( - (selectableDate) => selectableDate.date === this.selectedDate - ); + return this.selectableDatesData.days?.find((selectableDate) => selectableDate.date === this.selectedDate); }, supportingItems() { return useMainStore().lineItems.supportingItems; - }, + } }, watch: { selectedDate(newValue, oldValue) { @@ -355,34 +348,34 @@ export default { startTime: null, endTime: null, jobMaxMinutes: null, - jobMinMinutes: null, + jobMinMinutes: null }, - isPremiumAppointment: null, + isPremiumAppointment: null }; } }, selectedTimeSlotInfo(newValue) { this.updateFooterButtonText(newValue); - }, + } }, methods: { splitCopyOnCMSPlaceHolder, arePagePrerequisitesValid() { const { serviceLocation } = useMainStore().order; const serviceLocationPreReqs = - serviceLocation.zipCode && - serviceLocation.zipCodeCtu && - serviceLocation.appointmentType && - (serviceLocation.appointmentType === - AppointmentTypeStrings.MOBILE || - serviceLocation.appointmentType === - AppointmentTypeStrings.MOBILE_NOT_ITAC_AND_NOT_NOCOMP || - serviceLocation.provider.providerNumber); + serviceLocation.zipCode + && serviceLocation.zipCodeCtu + && serviceLocation.appointmentType + && (serviceLocation.appointmentType + === AppointmentTypeStrings.MOBILE + || serviceLocation.appointmentType + === AppointmentTypeStrings.MOBILE_NOT_ITAC_AND_NOT_NOCOMP + || serviceLocation.provider.providerNumber); const supportingItems = this.supportingItems !== null; const damageInfo = - useMainStore().order.damage.isRepair || - (useMainStore().order.lineItems?.glassParts != null && - useMainStore().order.lineItems.glassParts.length > 0); + useMainStore().order.damage.isRepair + || (useMainStore().order.lineItems?.glassParts != null + && useMainStore().order.lineItems.glassParts.length > 0); return serviceLocationPreReqs && supportingItems && damageInfo; }, @@ -417,15 +410,13 @@ export default { getSelectedTimeSlotInfo() { const isPremiumAppointment = !!( - this.supportingItems?.filter( - (lineItem) => - lineItem.partType === PREMIUM_FEE_PART_TYPE - ) ?? [] + this.supportingItems?.filter((lineItem) => + lineItem.partType === PREMIUM_FEE_PART_TYPE) ?? [] ).length > 0; const selectedTimeSlotInfo = { timeSlot: this.mainStore.order.schedule, - isPremiumAppointment, + isPremiumAppointment }; return selectedTimeSlotInfo; @@ -441,16 +432,12 @@ export default { if (!timeSlotInfo || !timeSlotInfo.timeSlot.date) { navbarButtonText = 'Continue'; } else { - navbarButtonText = `Select ${this.convertSelectedDateToShortMonthAndDay( - timeSlotInfo.timeSlot.date - )}`; + navbarButtonText = `Select ${this.convertSelectedDateToShortMonthAndDay(timeSlotInfo.timeSlot.date)}`; if (this.appointmentType === AppointmentTypeStrings.IN_SHOP) { - navbarButtonText += ` at ${this.getDisplayTextForMilitaryTime( - timeSlotInfo.timeSlot.startTime - )}`; + navbarButtonText += ` at ${this.getDisplayTextForMilitaryTime(timeSlotInfo.timeSlot.startTime)}`; } else if ( - this.appointmentType === AppointmentTypeStrings.MOBILE && - !timeSlotInfo.isPremiumAppointment + this.appointmentType === AppointmentTypeStrings.MOBILE + && !timeSlotInfo.isPremiumAppointment ) { navbarButtonText += ` at ${this.getDisplayTextForMilitaryTime( timeSlotInfo.timeSlot.startTime, @@ -468,7 +455,7 @@ export default { const dateObject = convertDateStringToDate(selectedDate); return dateObject.toLocaleDateString('en-us', { month: 'short', - day: 'numeric', + day: 'numeric' }); }, getDisplayTextForMilitaryTime( @@ -496,8 +483,8 @@ export default { this.navigationScenarios.CLICKED_FORWARD, this.$route ); - }, - }, + } + } };