import { db } from "@/lib/db";
import type { CatalogueCategory, PoTerm } from "@/lib/terms";

/** Active categories (ordered) each with their active clause texts — for the PO T&C editor (#11). */
export async function getTermsCatalogue(): Promise<CatalogueCategory[]> {
  const cats = await db.termsCategory.findMany({
    where: { isActive: true },
    orderBy: [{ sortOrder: "asc" }, { name: "asc" }],
    include: {
      clauses: {
        where: { isActive: true },
        orderBy: [{ sortOrder: "asc" }, { createdAt: "asc" }],
        select: { text: true },
      },
    },
  });
  return cats.map((c) => ({ id: c.id, name: c.name, clauses: c.clauses.map((x) => x.text) }));
}

/** The default T&C set pre-filled on a NEW PO — every active isDefault clause, ordered. */
export async function getDefaultPoTerms(): Promise<PoTerm[]> {
  const rows = await db.termsCondition.findMany({
    where: { isDefault: true, isActive: true, category: { isActive: true } },
    orderBy: [{ category: { sortOrder: "asc" } }, { sortOrder: "asc" }],
    select: { text: true, category: { select: { name: true } } },
  });
  return rows.map((r) => ({ category: r.category.name, text: r.text }));
}
