Add SMS campaigns

This commit is contained in:
2024-12-27 12:10:08 -05:00
parent adbaa75499
commit 7a224ee870
3 changed files with 200 additions and 142 deletions

View File

@@ -11,52 +11,17 @@ export function createReportingRouter(apiKey, apiRevision) {
router.get('/campaigns/:timeRange', async (req, res) => {
try {
const { timeRange } = req.params;
const { startDate, endDate } = req.query;
let params = {};
if (timeRange === 'custom' && startDate && endDate) {
const range = timeManager.getCustomRange(startDate, endDate);
if (!range) {
return res.status(400).json({ error: 'Invalid date range' });
}
params = { startDate: range.start.toISO(), endDate: range.end.toISO() };
} else {
params = { timeRange };
}
const data = await reportingService.getCampaignReports(params);
const { channel } = req.query;
// 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({
status: 'error',
message: error.message,
details: error.response?.data || null
const reports = await reportingService.getCampaignReports({
timeRange,
channel
});
res.json(reports);
} catch (error) {
console.error('[ReportingRoutes] Error fetching campaign reports:', error);
res.status(500).json({ error: error.message });
}
});