100 lines
3.7 KiB
JavaScript
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;
|