From e5aa47673b3f55df137291819e4d9b3bd8fcc7c7 Mon Sep 17 00:00:00 2001 From: Adam Caouette Date: Wed, 4 Mar 2026 08:05:52 -0500 Subject: [PATCH] CASH-2378: updates to mobile first modal (renaming, change in helper method) --- src/layouts/schedule/schedule.vue | 54 +++++++++++++++++++++---------- 1 file changed, 37 insertions(+), 17 deletions(-) diff --git a/src/layouts/schedule/schedule.vue b/src/layouts/schedule/schedule.vue index 07330b5d6..e1dd86e06 100644 --- a/src/layouts/schedule/schedule.vue +++ b/src/layouts/schedule/schedule.vue @@ -5,7 +5,7 @@ + @confirm-appointment="updateMobileFirstTimeSlotandNavigateForward" /> 0; } }, + isShowMobileFirstAppt() { + return experimentMixin.methods.hasSettingEqualTo( + experimentSettings.SHOW_MOBILE_FIRST_APPT, + "true" + ); + }, }, methods: { splitCopyOnCMSPlaceHolder, @@ -1934,10 +1936,10 @@ export default { const order = this.$store.getters.order; const isRepair = order.damage.isRepair; - let preSelectedMobileAppointment = null; + let promotedMobileAppointment = null; const todaysDate = getTodayDate(); - let firstMobileAMAppt = await this.getFirstAvailableMobileApptByTOD("AM"); - let firstMobilePMAppt = await this.getFirstAvailableMobileApptByTOD("PM"); + let firstMobileAMAppt = await this.getFirstAvailableApptByTOD("AM", "mobile"); + let firstMobilePMAppt = await this.getFirstAvailableApptByTOD("PM", "mobile"); if (!firstMobileAMAppt && !firstMobilePMAppt) { return; } @@ -2032,7 +2034,7 @@ export default { if (this.isShowMobileFirstAppt) { if (pmMobileDays == 0) { // Selects the first available time slot - preSelectedMobileAppointment = + promotedMobileAppointment = numberOfDaysToFirstMobileAMDate <= numberOfDaysToFirstMobilePMDate ? firstMobileAMAppt : firstMobilePMAppt; @@ -2041,20 +2043,20 @@ export default { numberOfDaysToFirstMobilePMDate <= pmMobileDays ) { // Selects the first available PM time slot - preSelectedMobileAppointment = firstMobilePMAppt; + promotedMobileAppointment = firstMobilePMAppt; } else if ( firstMobilePMDate && numberOfDaysToFirstMobilePMDate >= noPMMobileDays ) { // Selects the first available AM time slot. If none, selects the first available PM time slot - preSelectedMobileAppointment = firstMobileAMAppt + promotedMobileAppointment = firstMobileAMAppt ? firstMobileAMAppt : firstMobilePMAppt; } - if (preSelectedMobileAppointment) { + if (promotedMobileAppointment) { this.$refs.mobileFirstModal.setSelectedAppointment( - preSelectedMobileAppointment + promotedMobileAppointment ); this.$refs.mobileFirstModal.openModal(); } @@ -2062,11 +2064,19 @@ export default { } } }, - async getFirstAvailableMobileApptByTOD(timeOfDay) { - if (!this.selectableDatesMobile?.days?.length) { + async getFirstAvailableApptByTOD(timeOfDay, appointmentType) { + let selectableDays; + if (appointmentType?.toLowerCase() == "mobile") { + selectableDays = this.selectableDatesMobile?.days; + } else if (appointmentType?.toLowerCase() == "inshop") { + selectableDays = this.selectableDatesInshop?.days; + } else { + return; + } + if (!selectableDays?.length) { return null; } else { - for (const dateObj of this.selectableDatesMobile.days) { + for (const dateObj of selectableDays) { let matchingTimeSlot = { estimatedServiceMinutes: { minimum: this.estimatedServiceMinutesMinimum, @@ -2081,6 +2091,16 @@ export default { (matchingTimeSlot.timeSlot = slot) && (matchingTimeSlot.date = dateObj.date) ); + if ( + appointmentType?.toLowerCase() == "inshop" && + this.selectedShopAnswer?.address1 && + this.selectedShopAnswer?.address2 + ) { + matchingTimeSlot.addressCopy = + this.selectedShopAnswer?.address1 + + ", " + + this.selectedShopAnswer?.address2; + } if (isMatchingApptDay && matchingTimeSlot) { return matchingTimeSlot; } @@ -2088,7 +2108,7 @@ export default { return null; } }, - updateTimeSlotandNavigateForward(timeSlotObj) { + updateMobileFirstTimeSlotandNavigateForward(timeSlotObj) { this.selectedMobileFirstAppointment = true; this.appointmentType = AppointmentTypeStrings.MOBILE; this.selectedDate = timeSlotObj.date;