const express = require('express'); const { verifyToken } = require('../auth'); const { getClientAnalytics, getClientDetailsAnalytics, getDashboardAnalytics, getProductAnalytics, getProductDetailsAnalytics, getRfmAnalytics } = require('../services/analyticsService'); const router = express.Router(); const getRange = (query) => ({ start: query.start, end: query.end }); router.get('/analytics/dashboard', verifyToken, async (req, res) => { try { res.json(await getDashboardAnalytics(getRange(req.query))); } catch (error) { console.error('Error fetching dashboard analytics:', error); res.status(500).json({ error: 'Internal Server Error' }); } }); router.get('/analytics/products', verifyToken, async (req, res) => { try { res.json(await getProductAnalytics(getRange(req.query))); } catch (error) { console.error('Error fetching product analytics:', error); res.status(500).json({ error: 'Internal Server Error' }); } }); router.get('/analytics/products/:productId/details', verifyToken, async (req, res) => { try { const details = await getProductDetailsAnalytics(req.params.productId, getRange(req.query)); if (!details) { res.status(404).json({ error: 'Product not found' }); return; } res.json(details); } catch (error) { console.error('Error fetching product details analytics:', error); res.status(500).json({ error: 'Internal Server Error' }); } }); router.get('/analytics/clients', verifyToken, async (req, res) => { try { res.json(await getClientAnalytics(getRange(req.query))); } catch (error) { console.error('Error fetching client analytics:', error); res.status(500).json({ error: 'Internal Server Error' }); } }); router.get('/analytics/clients/:clientToken/details', verifyToken, async (req, res) => { try { const details = await getClientDetailsAnalytics(req.params.clientToken, getRange(req.query)); if (!details) { res.status(404).json({ error: 'Client not found' }); return; } res.json(details); } catch (error) { console.error('Error fetching client details analytics:', error); res.status(500).json({ error: 'Internal Server Error' }); } }); router.get('/analytics/rfm', verifyToken, async (req, res) => { try { res.json(await getRfmAnalytics(getRange(req.query))); } catch (error) { console.error('Error fetching RFM analytics:', error); res.status(500).json({ error: 'Internal Server Error' }); } }); module.exports = router;