import { prisma } from "../../config/prisma";

export function createDepartment(data: { organizationId: string; name: string }) {
  return prisma.department.create({ data });
}

export function findDepartmentById(id: string, organizationId: string) {
  return prisma.department.findFirst({ where: { id, organizationId } });
}

export async function findAllDepartments(
  organizationId: string,
  page: number,
  limit: number,
  search?: string,
) {
  const where = {
    organizationId,
    ...(search ? { name: { contains: search } } : {}),
  };
  const [data, total] = await Promise.all([
    prisma.department.findMany({
      where,
      orderBy: { createdAt: "desc" },
      skip: (page - 1) * limit,
      take: limit,
    }),
    prisma.department.count({ where }),
  ]);
  return { data, total };
}

export function updateDepartmentById(id: string, organizationId: string, name: string) {
  return prisma.department.update({ where: { id }, data: { name } });
}

export function deleteDepartmentById(id: string) {
  return prisma.department.delete({ where: { id } });
}

export function findDepartmentByName(organizationId: string, name: string) {
  return prisma.department.findUnique({ where: { organizationId_name: { organizationId, name } } });
}
