Add in subjects from messages correctly
This commit is contained in:
@@ -4,31 +4,52 @@ import { TimeManager } from '../utils/time.utils.js';
|
||||
|
||||
export function createReportingRouter(apiKey, apiRevision) {
|
||||
const router = express.Router();
|
||||
const timeManager = new TimeManager();
|
||||
const reportingService = new ReportingService(apiKey, apiRevision);
|
||||
const timeManager = new TimeManager();
|
||||
|
||||
// Get campaign reports with optional filtering
|
||||
router.get('/campaigns', async (req, res) => {
|
||||
// Get campaign reports by time range
|
||||
router.get('/campaigns/:timeRange', async (req, res) => {
|
||||
try {
|
||||
const { timeRange, startDate, endDate } = req.query;
|
||||
const { timeRange } = req.params;
|
||||
const { startDate, endDate } = req.query;
|
||||
|
||||
let params = {};
|
||||
if (timeRange === 'custom') {
|
||||
if (!startDate || !endDate) {
|
||||
return res.status(400).json({ error: 'Custom range requires startDate and endDate' });
|
||||
if (timeRange === 'custom' && startDate && endDate) {
|
||||
const range = timeManager.getCustomRange(startDate, endDate);
|
||||
if (!range) {
|
||||
return res.status(400).json({ error: 'Invalid date range' });
|
||||
}
|
||||
params = { startDate, endDate };
|
||||
params = { startDate: range.start.toISO(), endDate: range.end.toISO() };
|
||||
} else {
|
||||
params = { timeRange: timeRange || 'last30days' };
|
||||
params = { timeRange };
|
||||
}
|
||||
|
||||
console.log('[Reporting Route] Fetching campaign reports with params:', params);
|
||||
const data = await reportingService.getEnrichedCampaignReports(params);
|
||||
console.log('[Reporting Route] Success:', {
|
||||
count: data.data?.length || 0
|
||||
});
|
||||
const data = await reportingService.getCampaignReports(params);
|
||||
|
||||
res.json(data);
|
||||
// Transform the data to match the expected format
|
||||
const transformedData = {
|
||||
data: data.data.map(campaign => ({
|
||||
id: campaign.id,
|
||||
name: campaign.name,
|
||||
subject: campaign.subject,
|
||||
send_time: campaign.send_time,
|
||||
stats: {
|
||||
delivery_rate: campaign.attributes?.statistics?.delivery_rate || 0,
|
||||
delivered: campaign.attributes?.statistics?.delivered || 0,
|
||||
recipients: campaign.attributes?.statistics?.recipients || 0,
|
||||
open_rate: campaign.attributes?.statistics?.open_rate || 0,
|
||||
opens_unique: campaign.attributes?.statistics?.opens_unique || 0,
|
||||
opens: campaign.attributes?.statistics?.opens || 0,
|
||||
click_rate: campaign.attributes?.statistics?.click_rate || 0,
|
||||
clicks_unique: campaign.attributes?.statistics?.clicks_unique || 0,
|
||||
click_to_open_rate: campaign.attributes?.statistics?.click_to_open_rate || 0,
|
||||
conversion_value: campaign.attributes?.statistics?.conversion_value || 0,
|
||||
conversion_uniques: campaign.attributes?.statistics?.conversion_uniques || 0
|
||||
}
|
||||
}))
|
||||
};
|
||||
|
||||
res.json(transformedData);
|
||||
} catch (error) {
|
||||
console.error('[Reporting Route] Error:', error);
|
||||
res.status(500).json({
|
||||
@@ -39,34 +60,5 @@ export function createReportingRouter(apiKey, apiRevision) {
|
||||
}
|
||||
});
|
||||
|
||||
// Get campaign reports by time range
|
||||
router.get('/campaigns/:timeRange', async (req, res) => {
|
||||
try {
|
||||
const { timeRange } = req.params;
|
||||
|
||||
let result;
|
||||
if (timeRange === 'custom') {
|
||||
const { startDate, endDate } = req.query;
|
||||
if (!startDate || !endDate) {
|
||||
return res.status(400).json({ error: 'Custom range requires startDate and endDate' });
|
||||
}
|
||||
|
||||
result = await reportingService.getEnrichedCampaignReports({
|
||||
startDate,
|
||||
endDate
|
||||
});
|
||||
} else {
|
||||
result = await reportingService.getEnrichedCampaignReports({
|
||||
timeRange
|
||||
});
|
||||
}
|
||||
|
||||
res.json(result);
|
||||
} catch (error) {
|
||||
console.error("[Reporting Route] Error:", error);
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
return router;
|
||||
}
|
||||
Reference in New Issue
Block a user