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 }); } }, };