API/src/models/calendar/events/events.router.ts
Patrick Mueller 5dd3953542
All checks were successful
Jenkins Production Deployment
Debug DB connection
2022-12-24 20:40:02 +01:00

72 lines
1.9 KiB
TypeScript

/**
* 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
});
}
});