import dayjs from 'dayjs'; import { ECalendarMode, ISlot, ISlotEventsToSpaces, ISlotsEvents, } from '../../SACalendar/types'; export const selectedDate = dayjs.utc().format('YYYY-MM-DD'); export const fetchData = async (mode: ECalendarMode, date = selectedDate) => { let dateFrom = dayjs.utc(date).date(1).format('YYYY-MM-DD'); let dateTo = dayjs.utc(date).date(31).format('YYYY-MM-DD'); switch (mode) { case ECalendarMode.DAILY: { dateFrom = dayjs.utc(date).subtract(1, 'day').format('YYYY-MM-DD'); dateTo = dayjs.utc(date).add(1, 'day').format('YYYY-MM-DD'); break; } case ECalendarMode.WEEKLY: { dateFrom = dayjs.utc(date).subtract(7, 'day').format('YYYY-MM-DD'); dateTo = dayjs.utc(date).add(7, 'day').format('YYYY-MM-DD'); break; } } const url = `https://api.bondsports.co/v1/venues/120/spaces?startDate=${dateFrom}&endDate=${dateTo}&limit=100000&onlyActiveSessions=true&includeBlocking=true`; return await fetch(url) .then((response) => response.json()) .then((res) => { let newSlots = [] as ISlot[]; let eventsToSpaces = {} as ISlotEventsToSpaces; let events = {} as ISlotsEvents; res.data.forEach((resource: any) => { newSlots = [...newSlots, ...resource.sessions]; if (eventsToSpaces[resource.id]) { eventsToSpaces[resource.id] = [ ...eventsToSpaces[resource.id], ...(resource.sessions as ISlot[]), ]; } else { eventsToSpaces[resource.id] = [...resource.sessions]; } }); newSlots.forEach((event) => { events[event.id] = event; }); return { events, eventsToSpaces }; }) .catch((err) => err); };