Files
distri_notification_and_ale…/services/analytics.js
T
2025-01-10 13:03:41 +05:30

45 lines
1.3 KiB
JavaScript

const express = require('express');
const router = express.Router();
const Notification = require('../models/notification');
router.get('/analytics', async (req, res) => {
try {
const totalSent = await Notification.countDocuments({ status: 'sent' });
const totalFailed = await Notification.countDocuments({ status: 'failed' });
const totalRetried = await Notification.countDocuments({ status: 'retried' });
const deliveryStats = {
totalSent,
totalFailed,
totalRetried
};
const sentNotifications = await Notification.find({ status: 'sent' });
const totalDeliveryTime = sentNotifications.reduce((sum, notification) => {
return sum + (notification.sentAt - notification.createdAt);
}, 0);
const averageDeliveryTime = totalDeliveryTime / sentNotifications.length;
const totalResponses = await Notification.countDocuments({ userResponded: true });
const responseRate = totalResponses / totalSent;
const userEngagement = {
averageDeliveryTime,
responseRate
};
res.json({
deliveryStats,
userEngagement
});
} catch (error) {
console.error('Error generating analytics:', error);
res.status(500).json({ error: 'Internal server error' });
}
});
module.exports = router;