CentralBackend/controller/admin/MailTemplatesController.js
DeathKaioken baf53e36c1 Zipfelzwerg
Co-authored-by: Copilot <copilot@github.com>
2026-05-04 23:47:25 +02:00

100 lines
3.7 KiB
JavaScript

const MailTemplateService = require('../../services/template/MailTemplateService');
class MailTemplatesController {
static _currentUserId(req) {
return req.user?.userId ?? req.user?.id ?? null;
}
static async list(req, res) {
try {
const data = await MailTemplateService.list(req.query || {});
return res.json({ success: true, data });
} catch (error) {
return res.status(error?.status || 500).json({ success: false, message: error.message || 'Failed to list mail templates' });
}
}
static async getById(req, res) {
try {
const data = await MailTemplateService.getById(req.params.id);
if (!data) {
return res.status(404).json({ success: false, message: 'Mail template not found' });
}
return res.json({ success: true, data });
} catch (error) {
return res.status(error?.status || 500).json({ success: false, message: error.message || 'Failed to load mail template' });
}
}
static async create(req, res) {
try {
const data = await MailTemplateService.create(req.body || {}, MailTemplatesController._currentUserId(req));
return res.status(201).json({ success: true, data });
} catch (error) {
return res.status(error?.status || 500).json({ success: false, message: error.message || 'Failed to create mail template' });
}
}
static async update(req, res) {
try {
const data = await MailTemplateService.update(req.params.id, req.body || {}, MailTemplatesController._currentUserId(req));
if (!data) {
return res.status(404).json({ success: false, message: 'Mail template not found' });
}
return res.json({ success: true, data });
} catch (error) {
return res.status(error?.status || 500).json({ success: false, message: error.message || 'Failed to update mail template' });
}
}
static async activate(req, res) {
try {
const data = await MailTemplateService.activate(req.params.id, MailTemplatesController._currentUserId(req));
if (!data) {
return res.status(404).json({ success: false, message: 'Mail template not found' });
}
return res.json({ success: true, data });
} catch (error) {
return res.status(error?.status || 500).json({ success: false, message: error.message || 'Failed to activate mail template' });
}
}
static async archive(req, res) {
try {
const data = await MailTemplateService.archive(req.params.id, MailTemplatesController._currentUserId(req));
if (!data) {
return res.status(404).json({ success: false, message: 'Mail template not found' });
}
return res.json({ success: true, data });
} catch (error) {
return res.status(error?.status || 500).json({ success: false, message: error.message || 'Failed to archive mail template' });
}
}
static async unarchive(req, res) {
try {
const data = await MailTemplateService.unarchive(req.params.id, MailTemplatesController._currentUserId(req));
if (!data) {
return res.status(404).json({ success: false, message: 'Mail template not found' });
}
return res.json({ success: true, data });
} catch (error) {
return res.status(error?.status || 500).json({ success: false, message: error.message || 'Failed to unarchive mail template' });
}
}
static async remove(req, res) {
try {
const deleted = await MailTemplateService.remove(req.params.id);
if (!deleted) {
return res.status(404).json({ success: false, message: 'Mail template not found' });
}
return res.json({ success: true });
} catch (error) {
return res.status(error?.status || 500).json({ success: false, message: error.message || 'Failed to delete mail template' });
}
}
}
module.exports = MailTemplatesController;