import { Request, Response } from "express"; import { getEventAttendance, getEventDetails, getShortEventsInRange, setAttendanceStatus } from "../services/calendarService"; import { CalendarAttendance, CalendarEvent } from "@app/shared/types/calendar"; const express = require('express'); const r = express.Router(); function addMonths(date: Date, months: number): Date { const d = new Date(date) d.setMonth(d.getMonth() + months) return d } //get calendar events paged, requires a query string with from= and to= as mariadb ISO strings r.get('/', async (req, res) => { try { const fromDate: string = req.query.from; const toDate: string = req.query.to; if (fromDate === undefined || toDate === undefined) { res.status(400).send("Missing required query parameters 'from' and 'to'"); return; } const events = await getShortEventsInRange(fromDate, toDate); res.status(200).json(events); } catch (error) { console.error('Error fetching calendar events:', error); res.status(500).send('Error fetching calendar events'); } }); r.get('/upcoming', async (req, res) => { res.sendStatus(501); }) r.post('/:id/attendance', async (req: Request, res: Response) => { try { let member = req.user.id; let event = Number(req.params.id); let state = req.query.state as CalendarAttendance; setAttendanceStatus(member, event, state); res.sendStatus(200); } catch (error) { console.error('Failed to set attendance:', error); res.status(500).json(error); } }) //get event details r.get('/:id', async (req: Request, res: Response) => { try { const eventID: number = Number(req.params.id); let details: CalendarEvent = await getEventDetails(eventID); details.eventSignups = await getEventAttendance(eventID); console.log(details); res.status(200).json(details); } catch (err) { console.error('Insert failed:', err); res.status(500).json(err); } }) //post a new calendar event r.post('/', async (req, res) => { }) module.exports.calendarRouter = r;