import { prisma } from "../../config/prisma";
import { ServiceCategory } from "@prisma/client";

export function createService(
  organizationId: string,
  data: {
    name: string;
    category: ServiceCategory;
    price: number;
    description?: string;
    isDiyEnabled?: boolean;
  }
) {
  return prisma.service.create({ data: { ...data, organizationId } });
}

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

export function findServiceById(id: string, organizationId: string) {
  return prisma.service.findFirst({
    where: { id, organizationId },
    include: { serviceDocuments: { orderBy: { name: "asc" } } },
  });
}

export function updateServiceById(
  id: string,
  organizationId: string,
  data: Partial<{
    name: string;
    category: ServiceCategory;
    price: number;
    description: string;
    isDiyEnabled: boolean;
  }>
) {
  return prisma.service.update({ where: { id }, data });
}

export function deleteServiceById(id: string) {
  return prisma.service.delete({ where: { id } });
}
