const express = require('express'); const { authenticateAPIKey, verifyToken } = require('../auth'); const { getCampaignPreview, getCampaignQueueSummary, getTopClientsForCampaign, processPendingStockCampaigns, retryCampaignItems } = require('../services/campaignService'); const router = express.Router(); const verifyCampaignExportAccess = (req, res, next) => { if (req.headers['x-api-key']) { authenticateAPIKey(req, res, next); return; } verifyToken(req, res, next); }; router.get('/campaigns', verifyToken, async (req, res) => { try { res.json(await getCampaignQueueSummary()); } catch (error) { console.error('Error fetching campaigns:', error); res.status(500).json({ error: 'Internal Server Error' }); } }); router.get('/campaigns/preview', verifyToken, async (req, res) => { try { res.json(await getCampaignPreview()); } catch (error) { console.error('Error fetching campaign preview:', error); res.status(500).json({ error: 'Internal Server Error' }); } }); router.get('/campaigns/top-clients', verifyCampaignExportAccess, async (req, res) => { try { res.json(await getTopClientsForCampaign(req.query || {})); } catch (error) { console.error('Error fetching top campaign clients:', error); res.status(500).json({ error: 'Internal Server Error' }); } }); router.post('/campaigns/process', verifyToken, async (req, res) => { try { res.json(await processPendingStockCampaigns()); } catch (error) { console.error('Error processing campaigns:', error); res.status(500).json({ error: 'Internal Server Error' }); } }); router.post('/campaigns/retry', verifyToken, async (req, res) => { try { res.json(await retryCampaignItems(req.body || {})); } catch (error) { console.error('Error retrying campaigns:', error); res.status(500).json({ error: 'Internal Server Error' }); } }); module.exports = router;