66 lines
2.3 KiB
JavaScript
66 lines
2.3 KiB
JavaScript
import { Campaign, EmailTemplateVersion, MailingGroup, SmtpServer } from '../models/index.js';
|
|
|
|
export default {
|
|
async create(req, res) {
|
|
try {
|
|
const { smtp_server_ids, ...campaignData } = req.body;
|
|
const campaign = await Campaign.create(campaignData);
|
|
if (Array.isArray(smtp_server_ids)) {
|
|
await campaign.setSmtpServers(smtp_server_ids);
|
|
}
|
|
const campaignWithSmtps = await Campaign.findByPk(campaign.id, { include: [SmtpServer] });
|
|
res.status(201).json(campaignWithSmtps);
|
|
} catch (err) {
|
|
res.status(400).json({ error: err.message });
|
|
}
|
|
},
|
|
async getAll(req, res) {
|
|
try {
|
|
const limit = parseInt(req.query.limit) || 20;
|
|
const offset = parseInt(req.query.offset) || 0;
|
|
const result = await Campaign.findAndCountAll({
|
|
include: [EmailTemplateVersion, MailingGroup, SmtpServer],
|
|
limit,
|
|
offset,
|
|
order: [['id', 'ASC']]
|
|
});
|
|
res.json({ count: result.count, rows: result.rows });
|
|
} catch (err) {
|
|
res.status(500).json({ error: err.message });
|
|
}
|
|
},
|
|
async getById(req, res) {
|
|
try {
|
|
const campaign = await Campaign.findByPk(req.params.id, { include: [EmailTemplateVersion, MailingGroup, SmtpServer] });
|
|
if (!campaign) return res.status(404).json({ error: 'Campaign not found' });
|
|
res.json(campaign);
|
|
} catch (err) {
|
|
res.status(500).json({ error: err.message });
|
|
}
|
|
},
|
|
async update(req, res) {
|
|
try {
|
|
const { smtp_server_ids, ...campaignData } = req.body;
|
|
const campaign = await Campaign.findByPk(req.params.id);
|
|
if (!campaign) return res.status(404).json({ error: 'Campaign not found' });
|
|
await campaign.update(campaignData);
|
|
if (Array.isArray(smtp_server_ids)) {
|
|
await campaign.setSmtpServers(smtp_server_ids);
|
|
}
|
|
const campaignWithSmtps = await Campaign.findByPk(campaign.id, { include: [SmtpServer] });
|
|
res.json(campaignWithSmtps);
|
|
} catch (err) {
|
|
res.status(400).json({ error: err.message });
|
|
}
|
|
},
|
|
async delete(req, res) {
|
|
try {
|
|
const campaign = await Campaign.findByPk(req.params.id);
|
|
if (!campaign) return res.status(404).json({ error: 'Campaign not found' });
|
|
await campaign.destroy();
|
|
res.json({ message: 'Campaign deleted' });
|
|
} catch (err) {
|
|
res.status(500).json({ error: err.message });
|
|
}
|
|
},
|
|
};
|