/**
* Event Job Template 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 * as eventJobTemplateService from './service.js';
import { errorLoggerUpdate, errorLoggerRead } from '../../utils/requestLogger.js';
/**
* Create or update job template
* Handles PUT /:UIDeventTemplate
* @param {ExpressRequestAuthorized} req
* @param {ExpressResponse} res
* @returns {Promise<void>}
*/
export const createOrUpdateJobTemplateController = async (req, res) => {
try {
const UIDeventTemplate = UUID2hex(req.params.UIDeventTemplate);
const requalify = req.query.requalify === '1';
const result = await eventJobTemplateService.createOrUpdateJobTemplate(
UIDeventTemplate,
req.body,
req.session.root,
req.session.user,
req,
requalify
);
res.json({ success: true, result });
} catch (error) {
errorLoggerUpdate(error);
res.status(300).json({ success: false, message: error.message });
}
};
/**
* Delete job template
* Handles DELETE /:UID
* @param {ExpressRequestAuthorized} req
* @param {ExpressResponse} res
* @returns {Promise<void>}
*/
export const deleteJobTemplateController = async (req, res) => {
try {
const UID = UUID2hex(req.params.UID);
await eventJobTemplateService.deleteJobTemplate(UID, req.session.root);
res.json({ success: true });
} catch (error) {
errorLoggerUpdate(error);
res.json({ success: false, message: error.message });
}
};
/**
* Get all jobs for a function template
* Handles GET /eventJobs/:UID
* @param {ExpressRequestAuthorized} req
* @param {ExpressResponse} res
* @returns {Promise<void>}
*/
export const getEventJobsController = async (req, res) => {
try {
const UID = UUID2hex(req.params.UID);
const UIDUser = UUID2hex(req.session.user);
const options = {};
// Parse timestamp if provided
if (req.query.Timestamp) {
options.timestamp = req.query.Timestamp;
}
// Parse data fields if provided
if (req.query.Data) {
let fields = [];
try {
fields = JSON.parse(String(req.query.Data));
} catch (e) {
fields = [{ path: req.query.Data }];
}
options.dataFields = fields;
}
// Check if group banner is requested
if (req.query.groupBanner) {
options.groupBanner = true;
}
const result = await eventJobTemplateService.getEventJobs(UID, UIDUser, options);
res.json({ success: true, result });
} catch (error) {
errorLoggerRead(error);
res.json({ success: false, message: error.message });
}
};
/**
* Get all function template names and UIDs
* Handles GET /:UID
* @param {ExpressRequestAuthorized} req
* @param {ExpressResponse} res
* @returns {Promise<void>}
*/
export const getJobTemplatesController = async (req, res) => {
try {
const UID = UUID2hex(req.params.UID);
const result = await eventJobTemplateService.getJobTemplates(UID);
res.json({ success: true, result });
} catch (error) {
errorLoggerRead(error);
res.json({ success: false, message: error.message });
}
};
/**
* Get all function templates with full data
* Handles GET /Data/:UID
* @param {ExpressRequestAuthorized} req
* @param {ExpressResponse} res
* @returns {Promise<void>}
*/
export const getJobTemplatesWithDataController = async (req, res) => {
try {
const UID = UUID2hex(req.params.UID);
const result = await eventJobTemplateService.getJobTemplatesWithData(UID);
res.json({ success: true, result });
} catch (error) {
errorLoggerRead(error);
res.json({ success: false, message: error.message });
}
};