/** * Required External Modules and Interfaces */ import express, {Request, Response} from 'express'; import * as EventService from './events.service'; import * as iCalService from './icalgenerator.service'; import {Guid} from 'guid-typescript'; import logger from '../../../middleware/logger'; import * as dotenv from 'dotenv'; /** * Router Definition */ export const eventsRouter = express.Router(); /** * Constants */ const fileNames = ['Nachklang_calendar', 'Nachklang_internal_calendar', 'Nachklang_management_calendar']; /** * Controller Definitions */ eventsRouter.get('/json', async (req: Request, res: Response) => { try { // Get request params let calendarId: number = parseInt(req.query.calendar as string ?? '', 10); // Get events let events = await EventService.getAllEvents(calendarId); // Send the events back res.status(200).send(events); } catch (e: any) { console.log('Error handling a request: ' + e.message); res.status(500).send(JSON.stringify({'message': 'Internal Server Error. Try again later.'})); } }); eventsRouter.get('/ical', async (req: Request, res: Response) => { try { // Get request params let calendarId: number = parseInt(req.query.calendar as string ?? '', 10); // Get events let events = await EventService.getAllEvents(calendarId); // generate file name let fileName = fileNames[calendarId]; let file = await iCalService.convertToIcal(events); // Send the ical file back res.set({'Content-Disposition': 'attachment; filename=' + fileName + '.ics'}); res.status(200).send(file); } catch (e: any) { let errorGuid = Guid.create().toString(); logger.error('Error handling a request: ' + e.message, {reference: errorGuid}); logger.error('DB Username from dotenv: ' + process.env.DB_USER, {reference: errorGuid}); res.status(500).send({ 'status': 'PROCESSING_ERROR', 'message': 'Internal Server Error. Try again later.', 'reference': errorGuid }); } });