forked from UKSOURCE/cms.hailearning.edu.vn
55 lines
1.9 KiB
JavaScript
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'
|
|
});
|
|
}
|
|
};
|