import { createEvents, EventStatus } from 'ics' import { BookingDocument } from '../db/booking' import { BOOKING_STATUS } from '../db/bookingStatus' import { getBaseURL } from './url' function convertDay(value: string): [number, number, number] { const parts = value.split('-') if (parts.length !== 3) { throw new Error('faile converting day') } return [Number(parts[0]), Number(parts[1]), Number(parts[2])] } export function generateBookedCalendar(bookings: BookingDocument[]) { const events = bookings.map((booking) => ({ calName: 'Pfadi-Bussle Buchungen', start: convertDay(booking.days[0]), end: convertDay(booking.days[booking.days.length - 1]), title: `Buchung ${booking.booker.name}`, description: `Link: ${getBaseURL()}/booking/${booking.uuid}`, status: booking.status === BOOKING_STATUS.CONFIRMED ? ('CONFIRMED' as EventStatus) : ('TENTATIVE' as EventStatus), })) const { error, value } = createEvents(events) if (error) { throw error } return value }