72 lines
1.9 KiB
TypeScript
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
|
|
});
|
|
}
|
|
});
|