import { Request, Response } from "express";
import { sendSuccess, sendPaginated } from "../../common/utils/api-response";
import * as deptService from "./department.service";

export async function createDepartment(req: Request, res: Response) {
  const organizationId = req.tenantId!;
  const result = await deptService.createDepartment(organizationId, req.body.name);
  sendSuccess(res, result, 201);
}

export async function getDepartments(req: Request, res: Response) {
  const organizationId = req.tenantId!;
  const page = Math.max(1, parseInt(String(req.query.page ?? "1")));
  const limit = Math.min(100, Math.max(1, parseInt(String(req.query.limit ?? "10"))));
  const search = req.query.search ? String(req.query.search) : undefined;
  const { data, total } = await deptService.getDepartments(organizationId, page, limit, search);
  sendPaginated(res, data, total, page, limit);
}

export async function getDepartment(req: Request, res: Response) {
  const organizationId = req.tenantId!;
  const result = await deptService.getDepartment(req.params.id, organizationId);
  sendSuccess(res, result);
}

export async function updateDepartment(req: Request, res: Response) {
  const organizationId = req.tenantId!;
  const result = await deptService.updateDepartment(req.params.id, organizationId, req.body.name);
  sendSuccess(res, result);
}

export async function deleteDepartment(req: Request, res: Response) {
  const organizationId = req.tenantId!;
  const result = await deptService.deleteDepartment(req.params.id, organizationId);
  sendSuccess(res, result);
}
