Files
uldp-degree-mangement-system/controllers/dashboardController.js
2026-04-11 14:08:27 +07:00

55 lines
1.9 KiB
JavaScript

const Qualification = require('../models/qualification');
const Certificate = require('../models/certificate');
exports.getDashboard = async (req, res) => {
try {
const thirtyDaysAgo = new Date(Date.now() - 30 * 24 * 60 * 60 * 1000);
const [
qualificationCount,
certificationCount,
activeQual,
revokedQual,
activeCert,
revokedCert,
recentQual,
recentCert,
recentQualifications,
recentCertificates
] = await Promise.all([
Qualification.countDocuments(),
Certificate.countDocuments(),
Qualification.countDocuments({ status: 'active' }),
Qualification.countDocuments({ status: 'revoked' }),
Certificate.countDocuments({ status: 'active' }),
Certificate.countDocuments({ status: 'revoked' }),
Qualification.countDocuments({ createdAt: { $gte: thirtyDaysAgo } }),
Certificate.countDocuments({ createdAt: { $gte: thirtyDaysAgo } }),
Qualification.find().sort({ createdAt: -1 }).limit(5).populate('department level'),
Certificate.find().sort({ createdAt: -1 }).limit(5).populate('department level')
]);
res.render('admin/dashboard', {
qualificationCount,
certificationCount,
total: qualificationCount + certificationCount,
activeCount: activeQual + activeCert,
revokedCount: revokedQual + revokedCert,
recentCount: recentQual + recentCert,
recentQualifications,
recentCertificates,
user: req.session.user,
layout: 'layouts/admin',
title: 'Dashboard'
});
} catch (err) {
console.error(err);
res.render('admin/dashboard', {
qualificationCount: 0, certificationCount: 0,
total: 0, activeCount: 0, revokedCount: 0, recentCount: 0,
recentQualifications: [], recentCertificates: [],
user: req.session.user, layout: 'layouts/admin', title: 'Dashboard'
});
}
};