/**
 * Required External Modules and Interfaces
 */
import express, {Request, Response} from 'express';
import * as EventService from './event.service';
import * as UserService from '../user/user.service';
import logger from '../../../middleware/logger';
import {Guid} from 'guid-typescript';

/**
 * Router Definition
 */
export const eventRouter = express.Router();

eventRouter.get('/:isDevCall', async (req: Request, res: Response) => {
    try {
        throw new Error('Test');
        let userId = (req.query.userId ?? '').toString();
        let sessionId = (req.query.sessionId ?? '').toString();
        let sessionKey = (req.query.sessionKey ?? '').toString();
        let useDev: boolean = (req.params.isDevCall ?? '') === 'dev'; // TBD

        if (userId === '' || sessionId === '' || sessionKey === '') {
            res.status(400).send({
                'status': 'WRONG_PARAMS',
                'message': 'Missing or wrong parameters'
            });
            return;
        }

        if (!await UserService.checkSession(useDev, userId, sessionId, sessionKey)) {
            res.status(403).send({
                'status': 'INVALID_SESSION',
                'message': 'The user or session could not be found or the session is invalid'
            });
            return;
        }

        let data = await EventService.getEventData(useDev, userId);

        res.status(200).send(data);
    } catch (e) {
        let errorGuid = Guid.create().toString();
        logger.error('Error handling a request: ' + e.message, {reference: errorGuid});
        res.status(500).send({
            'status': 'PROCESSING_ERROR',
            'message': 'Internal Server Error. Try again later.',
            'reference': errorGuid
        });
    }
});