// backend/src/routes/dashboard.js
import { Router } from "express";
import { Op } from "sequelize";
import { Correspondence, Document, RFA, User } from "../db/index.js"; // import models
import { authJwt } from "../middleware/index.js";

const router = Router();

// Middleware: ตรวจสอบสิทธิ์สำหรับทุก route ในไฟล์นี้
router.use(authJwt.verifyToken);

// === API สำหรับ User Management Widget ===
router.get("/users/summary", async (req, res, next) => {
  try {
    const totalUsers = await User.count();
    const activeUsers = await User.count({ where: { is_active: true } });
    // ดึง user ที่สร้างล่าสุด 5 คน
    const recentUsers = await User.findAll({
      limit: 5,
      order: [["createdAt", "DESC"]],
      attributes: ["id", "username", "email", "createdAt"],
    });

    res.json({
      total: totalUsers,
      active: activeUsers,
      inactive: totalUsers - activeUsers,
      recent: recentUsers,
    });
  } catch (error) {
    next(error);
  }
});

// === API อื่นๆ สำหรับ Dashboard ที่เราคุยกันไว้ก่อนหน้า ===
router.get("/stats", async (req, res, next) => {
  try {
    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;
