From c47cfbd55da05be80cbfc72028f115df492db4bc Mon Sep 17 00:00:00 2001 From: Collin Duncan <3679940+cgduncan7@users.noreply.github.com> Date: Mon, 18 Mar 2024 17:16:50 +0100 Subject: [PATCH] Fixing getting all court statuses --- src/runner/baanreserveren/service.ts | 36 +++++++++++++++------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/src/runner/baanreserveren/service.ts b/src/runner/baanreserveren/service.ts index ddaa134..32382d5 100644 --- a/src/runner/baanreserveren/service.ts +++ b/src/runner/baanreserveren/service.ts @@ -580,21 +580,23 @@ export class BaanReserverenService { duration: string }[] = [] for (const court of courts) { - const courtJsonValue = await court.jsonValue() - const courtParent = courtJsonValue.parentElement - const startTime = dayjs( - Number(courtParent?.getAttribute('utc') ?? 0), - ).toISOString() - const status = courtJsonValue.getAttribute('type') ?? 'closed' - const courtSlot = courtJsonValue.getAttribute('slot') + const classListObj = await ( + await court.getProperty('classList') + ).jsonValue() + const classList = Object.values(classListObj) + const rClass = classList.filter((cl) => /r-\d{2}/.test(cl))[0] const courtNumber = - courtSlot != null - ? `${CourtSlotToNumber[courtSlot as CourtSlot]}` - : 'unknown' - const duration = `${ - Number(courtJsonValue.getAttribute('rowspan') ?? '0') * 15 - } minutes` - courtStatuses.push({ courtNumber, startTime, status, duration }) + `${CourtSlotToNumber[rClass.replace(/r-/, '') as CourtSlot]}` ?? + 'unknown court' + const startTime = await court + .$eval('div.slot-period', (e) => e.innerText.trim()) + .catch(() => 'unknown') + const status = classList.includes('free') ? 'available' : 'unavailable' + const courtRowSpan = await ( + await court.getProperty('rowSpan') + ).jsonValue() + const duration = `${Number(courtRowSpan ?? '0') * 15} minutes` + courtStatuses.push({ courtNumber, startTime, status, duration }) //const d = require('dayjs'); await get(BaanReserverenService).monitorCourtReservations(d()); } return courtStatuses @@ -612,9 +614,9 @@ export class BaanReserverenService { data: statuses, }) } catch (error: unknown) { - this.loggerService.error('Failed to monitor court reservations', { - error, - }) + this.loggerService.error( + `Failed to monitor court reservations: ${(error as Error).message}`, + ) if (!swallowError) { throw error }