// controllers/dashboard.js const db = require('../config/db'); const { successResponse, errorResponse } = require('../utils/apiResponse'); class DashboardController { static async getStats(req, res) { try { const [ [totalJobs], [activeJobs], [totalCandidates], [pendingCandidates], [passedCandidates], [rejectedCandidates], [interviewedCandidates], [averageMatchScore], [passRate] ] = await Promise.all([ db.query('SELECT COUNT(*) as count FROM jobs'), db.query("SELECT COUNT(*) as count FROM jobs WHERE status = 'active'"), db.query('SELECT COUNT(*) as count FROM candidates'), db.query("SELECT COUNT(*) as count FROM candidates WHERE status = 'pending'"), db.query("SELECT COUNT(*) as count FROM candidates WHERE status = 'passed'"), db.query("SELECT COUNT(*) as count FROM candidates WHERE status = 'rejected'"), db.query("SELECT COUNT(*) as count FROM candidates WHERE status = 'interviewed'"), db.query('SELECT AVG(match_score) as avg FROM candidates'), db.query(` SELECT COUNT(CASE WHEN status = 'passed' THEN 1 END) / COUNT(*) * 100 as rate FROM candidates `) ]); successResponse(res, { totalJobs: totalJobs[0].count, activeJobs: activeJobs[0].count, totalCandidates: totalCandidates[0].count, pendingCandidates: pendingCandidates[0].count, passedCandidates: passedCandidates[0].count, rejectedCandidates: rejectedCandidates[0].count, interviewedCandidates: interviewedCandidates[0].count, averageMatchScore: Math.round(averageMatchScore[0].avg || 0), passRate: Math.round(passRate[0].rate || 0) }); } catch (err) { errorResponse(res, err); } } } module.exports = DashboardController;