// @ts-check
/**
* @import {ExpressRequestAuthorized, ExpressResponse} from '../../types.js'
*/
import * as eventPersonsService from './service.js';
import { errorLoggerUpdate, errorLoggerRead } from '../../utils/requestLogger.js';
import { UUID2hex } from '@commtool/sql-query';
import { isAdmin, isObjectAdmin } from '../../utils/authChecks.js';
/**
* Controller for updating an event list
* @param {ExpressRequestAuthorized} req
* @param {ExpressResponse} res
*/
export const updateEventListController = async (req, res) => {
try {
const listUID = UUID2hex(req.params.UID);
// Get the event where this list belongs to
const events = await eventPersonsService.getEventForList(listUID);
// Check authorization
if (!isAdmin(req.session) && (events.length === 0 || !await isObjectAdmin(req, events[0].UID))) {
res.json({ message: 'user not authorized', success: false });
return;
}
// Update the list
const result = await eventPersonsService.updateEventList(req, listUID, events[0].Type);
res.json(result);
} catch (error) {
errorLoggerUpdate({ error, location: 'eventPersons/controller.updateEventListController' });
res.status(500).json({ success: false, message: error.message });
}
};
/**
* Controller for getting event lists with participants
* @param {ExpressRequestAuthorized} req
* @param {ExpressResponse} res
*/
export const getEventListsController = async (req, res) => {
try {
// Validate UID parameter
if (req.params.UID === 'undefined') {
res.json({ success: false, message: 'supplied undefined UID' });
return;
}
const eventUID = UUID2hex(req.params.UID);
if (!eventUID) {
res.json({ success: false, message: 'supplied invalid UID' });
return;
}
const admin = await isAdmin(req.session);
const userUID = UUID2hex(req.session.user);
// Get lists with participants
const result = await eventPersonsService.getEventLists(
eventUID,
userUID,
admin,
req.query,
req.session
);
res.json({ success: true, result });
} catch (error) {
errorLoggerRead({ error, location: 'eventPersons/controller.getEventListsController' });
res.status(500).json({ success: false, message: error.message });
}
};