From bbfaf75c872f4d5f6bf0067fe3353fc7357bda1b Mon Sep 17 00:00:00 2001 From: Adam Caouette Date: Sun, 8 Mar 2026 14:08:18 -0400 Subject: [PATCH] CASH-2378 - split back out mobile and inshop instances of getFirstAvailableApptByTOD --- src/layouts/schedule/schedule.vue | 47 ++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/src/layouts/schedule/schedule.vue b/src/layouts/schedule/schedule.vue index 89ed21a08..c5a5f9ac6 100644 --- a/src/layouts/schedule/schedule.vue +++ b/src/layouts/schedule/schedule.vue @@ -1927,8 +1927,8 @@ export default { let promotedMobileAppointment = null; const todaysDate = getTodayDate(); - let firstMobileAMAppt = await this.getFirstAvailableApptByTOD("AM", "mobile"); - let firstMobilePMAppt = await this.getFirstAvailableApptByTOD("PM", "mobile"); + let firstMobileAMAppt = await this.getFirstAvailableMobileApptByTOD("AM"); + let firstMobilePMAppt = await this.getFirstAvailableMobileApptByTOD("PM"); if (!firstMobileAMAppt && !firstMobilePMAppt) { return; } @@ -2091,10 +2091,10 @@ export default { // Fetch all appointments const [firstMobileAMAppt, firstMobilePMAppt, firstInshopAMAppt, firstInshopPMAppt] = await Promise.all([ - this.getFirstAvailableApptByTOD("AM", "mobile"), - this.getFirstAvailableApptByTOD("PM", "mobile"), - this.getFirstAvailableApptByTOD("AM", "inshop"), - this.getFirstAvailableApptByTOD("PM", "inshop"), + this.getFirstAvailableMobileApptByTOD("AM"), + this.getFirstAvailableMobileApptByTOD("PM"), + this.getFirstAvailableInshopApptByTOD("AM"), + this.getFirstAvailableInshopApptByTOD("PM"), ]); // Extract dates @@ -2210,15 +2210,35 @@ export default { } } }, - async getFirstAvailableApptByTOD(timeOfDay, appointmentType) { - let selectableDays; - if (appointmentType?.toLowerCase() == "mobile") { - selectableDays = this.selectableDatesMobile?.days; - } else if (appointmentType?.toLowerCase() == "inshop") { - selectableDays = this.selectableDatesInshop?.days; + async getFirstAvailableMobileApptByTOD(timeOfDay) { + const selectableDays = this.selectableDatesMobile?.days; + if (!selectableDays?.length) { + return null; } else { - return; + for (const dateObj of selectableDays) { + let matchingTimeSlot = { + estimatedServiceMinutes: { + minimum: this.estimatedServiceMinutesMinimum, + maximum: this.estimatedServiceMinutesMaximum, + }, + timeSlot: null, + date: null, + }; + const isMatchingApptDay = dateObj.timeSlots.some( + (slot) => + slot.id.includes(timeOfDay) && + (matchingTimeSlot.timeSlot = slot) && + (matchingTimeSlot.date = dateObj.date) + ); + if (isMatchingApptDay && matchingTimeSlot) { + return matchingTimeSlot; + } + } + return null; } + }, + async getFirstAvailableInshopApptByTOD(timeOfDay) { + const selectableDays = this.selectableDatesInshop?.days; if (!selectableDays?.length) { return null; } else { @@ -2239,7 +2259,6 @@ export default { (matchingTimeSlot.date = dateObj.date) ); if ( - appointmentType?.toLowerCase() == "inshop" && this.selectedShopAnswer?.address1 && this.selectedShopAnswer?.address2 ) {