import { Router } from "express";
import { authMiddleware } from "../../common/middlewares/auth.middleware";
import { tenantMiddleware } from "../../common/middlewares/tenant.middleware";
import { requireRole } from "../../common/middlewares/roles.middleware";
import { validate } from "../../common/middlewares/validate.middleware";
import {
  createDepartmentSchema,
  updateDepartmentSchema,
} from "./department.validation";
import * as deptController from "./department.controller";
import "./department.openapi";

const router = Router();

router.use(authMiddleware, tenantMiddleware);

router.post(
  "/create-department",
  requireRole("ADMIN", "SUPER_ADMIN"),
  authMiddleware,
  validate(createDepartmentSchema),
  deptController.createDepartment
);
router.get(
  "/get-all-departments",
  authMiddleware,
  deptController.getDepartments
);
router.get("/get-department/:id", authMiddleware, deptController.getDepartment);
router.put(
  "/update-department/:id",
  authMiddleware,
  requireRole("ADMIN", "SUPER_ADMIN"),
  validate(updateDepartmentSchema),
  deptController.updateDepartment
);
router.delete(
  "/delete-department/:id",
  authMiddleware,
  requireRole("ADMIN", "SUPER_ADMIN"),
  deptController.deleteDepartment
);

export default router;
