/**
* Event Group Controller Layer
* Handles HTTP request/response and delegates to service layer
*/
// @ts-check
/**
* @import {ExpressRequestAuthorized, ExpressResponse} from './../../types.js'
*/
import { UUID2hex } from '@commtool/sql-query';
import { paginateList } from '../../utils/paginateList.js';
import * as eventGroupService from './service.js';
import { errorLoggerUpdate, errorLoggerRead } from '../../utils/requestLogger.js';
/**
* Add group to event controller
* Handles PUT /:UIDevent
* @param {ExpressRequestAuthorized} req
* @param {ExpressResponse} res
* @returns {Promise<void>}
*/
export const addGroupToEventController = async (req, res) => {
try {
const UIDevent = UUID2hex(req.params.UIDevent);
if (!req.body.UID) {
res.status(300).json({
success: false,
message: 'UID parameter for the group missing in body'
});
return;
}
const result = await eventGroupService.addEventGroup(
UIDevent,
req.body.UID,
req.session,
req
);
res.json({ success: true, result });
} catch (error) {
errorLoggerUpdate(error);
res.status(300).json({ success: false, message: error.message });
}
};
/**
* Delete group from event controller
* Handles DELETE /:UIDevent/:UIDgroup
* @param {ExpressRequestAuthorized} req
* @param {ExpressResponse} res
* @returns {Promise<void>}
*/
export const deleteGroupFromEventController = async (req, res) => {
try {
const UIDevent = UUID2hex(req.params.UIDevent);
const UIDgroup = UUID2hex(req.params.UIDgroup);
await eventGroupService.deleteEventGroup(UIDevent, UIDgroup, req);
res.json({ success: true });
} catch (error) {
errorLoggerUpdate(error);
res.status(300).json({ success: false, message: error.message });
}
};
/**
* List event groups controller with pagination support
* Handles GET /:UID
* @param {ExpressRequestAuthorized} req
* @param {ExpressResponse} res
* @param {Function} next
* @returns {Promise<void>}
*/
export const listEventGroupsController = async (req, res, next) => {
try {
// Check if pagination is requested
if (req.query.__page) {
const paginatedResult = await paginateList(req, eventGroupService.getGroupsListing);
res.json(paginatedResult);
return;
}
// Normal listing without pagination
const result = await eventGroupService.getGroupsListing(req);
res.json({ success: true, result });
} catch (error) {
errorLoggerRead(error);
res.status(500).json({ success: false, message: error.message });
}
};