// backend/src/routes/dashboard.js
import { Router } from 'express';
import { Op } from 'sequelize';

// 1. Import Middleware ที่ถูกต้อง
import { authJwt } from '../middleware/authJwt.js';
import { loadPrincipalMw } from '../middleware/loadPrincipal.js';

// 2. Import Sequelize Models จาก `sequelize.js` ไม่ใช่ `index.js`
import { Correspondence, Document, RFA, User } from '../db/sequelize.js';

const router = Router();

// 3. ใช้ Middleware Chain ที่ถูกต้อง 100%
router.use(authJwt(), loadPrincipalMw());


// === API สำหรับ User Management Widget ===
router.get('/users/summary', async (req, res, next) => {
    try {
        // ตรวจสอบว่า Model ถูกโหลดแล้วหรือยัง (จำเป็นสำหรับโหมด lazy-load)
        if (!User) {
            return res.status(503).json({ message: 'Database models not available. Is ENABLE_SEQUELIZE=1 set?' });
        }
        const totalUsers = await User.count();
        const activeUsers = await User.count({ where: { is_active: true } });
        
        res.json({
            total: totalUsers,
            active: activeUsers,
            inactive: totalUsers - activeUsers,
        });
    } catch (error) {
        next(error);
    }
});


// === API อื่นๆ สำหรับ Dashboard ที่เราคุยกันไว้ก่อนหน้า ===
router.get('/stats', async (req, res, next) => {
    try {
        if (!Document || !RFA) {
            return res.status(503).json({ message: 'Database models not available. Is ENABLE_SEQUELIZE=1 set?' });
        }

        const sevenDaysAgo = new Date(new Date().setDate(new Date().getDate() - 7));

        const totalDocuments = await Document.count();
        const newThisWeek = await Document.count({ where: { createdAt: { [Op.gte]: sevenDaysAgo } } });
        const pendingRfas = await RFA.count({ where: { status: 'pending' } }); // สมมติตาม status

        res.json({
            totalDocuments,
            newThisWeek,
            pendingRfas
        });
    } catch (error) {
        next(error);
    }
});


export default router;