// src/controllers/app/department/department.controller.js
const express = require("express");
const router = express.Router();
const departmentService = require("../../../services/department.service");
const authMiddleware = require("../../../middleware/auth.middleware");
const roleCheck = require("../../../middleware/roleCheck.middleware");
const { query } = require("express-validator");
const validate = require("../../../middleware/validator.middleware");

// 인증 및 권한 확인
router.use(authMiddleware);
router.use(roleCheck(["super_admin", "company_admin", "branch_admin", "user"]));

// 부서 목록 조회 (트리 구조 또는 평면 구조로 조회 가능)
router.get(
  "/",
  [
    query("format")
      .optional()
      .isIn(["tree", "flat"])
      .withMessage("유효한 형식이 아닙니다"),
    query("includeInactive")
      .optional()
      .isBoolean()
      .withMessage("유효한 값이 아닙니다"),
    validate,
  ],
  async (req, res, next) => {
    try {
      const format = req.query.format || "flat";
      const includeInactive = req.query.includeInactive === "true";

      const department = await departmentService.findAll(
        req.user,
        format,
        includeInactive
      );
      res.json(department);
    } catch (error) {
      next(error);
    }
  }
);

module.exports = router;