// ── Module "Modelbrieven" — types ───────────────────────────────────────────
// Bibliotheek van modelmails voor dossierbeheer (cliënten, confraters,
// banken, …). Elke modelbrief heeft een onderwerp en een tekst met
// {{parameter}}-placeholders, en optioneel varianten (hypotheses, bv. een
// alternatieve betaalwijze) waaruit de gebruiker er één of meer kiest.
// Vertalingen zijn aparte items, gelinkt via vertalingVanId.

/**
 * Hoofdcategorie, identiek aan de hoofdstukken van "Modelbrieven voor
 * dossierbeheer". Elke modelbrief hoort bij precies één categorie; de seeds
 * staan per categorie in een eigen bestand onder data/modelbrieven/brieven/.
 */
export type BriefCategorie =
  | "betaling"
  | "digitale_ondertekening"
  | "akteontwerp"
  | "kredietdossier"
  | "verkoop"
  | "openbare_verkoop"
  | "vennootschappen"
  | "aktekosten"
  | "schenking"
  | "erfovereenkomst"
  | "basisakte"
  | "nalatenschap"
  | "zorgvolmacht"
  | "testament"
  | "echtscheiding"
  | "huwelijk_samenwoning"
  | "vastgoed_diversen"
  | "volmacht"
  | "legalisatie"
  | "doorverwijzen"
  | "reviews";

export const briefCategorieLabels: Record<BriefCategorie, string> = {
  betaling: "Betaling",
  digitale_ondertekening: "Digitale ondertekening",
  akteontwerp: "Akteontwerp uitsturen",
  kredietdossier: "Kredietdossier",
  verkoop: "Verkoopovereenkomst",
  openbare_verkoop: "Openbare verkoop & Biddit",
  vennootschappen: "Vennootschappen",
  aktekosten: "Aktekosten",
  schenking: "Schenking",
  erfovereenkomst: "Erfovereenkomst",
  basisakte: "Basisakte (mede-eigendom)",
  nalatenschap: "Nalatenschap",
  zorgvolmacht: "Zorgvolmacht",
  testament: "Testament",
  echtscheiding: "Echtscheiding",
  huwelijk_samenwoning: "Huwelijk & wettelijke samenwoning",
  vastgoed_diversen: "Vastgoed — diverse akten",
  volmacht: "Volmacht",
  legalisatie: "Legalisatie versus notariële akte",
  doorverwijzen: "Doorverwijzen",
  reviews: "Reviews",
};

/** Taal van een modelbrief. */
export type BriefTaal = "nl" | "fr" | "en";

export const briefTaalLabels: Record<BriefTaal, string> = {
  nl: "Nederlands",
  fr: "Français",
  en: "English",
};

/**
 * Gestructureerde rol van de geadresseerde, afgeleid uit het vrije
 * `ontvanger`-label (bv. "Koper (cliënt)", "confrater (verkoper)") door
 * `bepaalOntvangerRol` (samenstellen.ts). Laat een afwerkende agent of UI de
 * ingevulde mail rechtstreeks adresseren zonder zelf het vrije label te
 * moeten interpreteren.
 */
export type OntvangerRol =
  | "client-koper"
  | "client-verkoper"
  | "client-overig"
  | "confrater"
  | "bank"
  | "fiscus"
  | "makelaar"
  | "bieder"
  | "overig";

export const ontvangerRolLabels: Record<OntvangerRol, string> = {
  "client-koper": "Cliënt (koper)",
  "client-verkoper": "Cliënt (verkoper)",
  "client-overig": "Cliënt",
  confrater: "Confrater-notaris",
  bank: "Bank",
  fiscus: "Fiscus (FOD Financiën/SPF Finances)",
  makelaar: "Vastgoedmakelaar",
  bieder: "Bieder (openbare verkoop)",
  overig: "Overige geadresseerde",
};

/** In te vullen parameter, in onderwerp/tekst genoteerd als {{naam}}. */
export interface BriefParameter {
  naam: string;
  omschrijving: string;
  voorbeeld?: string;
}

/**
 * Alternatieve passage (hypothese) van een modelbrief, bv. een andere
 * betaalwijze of een andere afsluiting. Bij gebruik kiest de gebruiker de
 * toepasselijke variant(en); niet-gekozen varianten blijven buiten de mail.
 */
export interface BriefVariant {
  id: string;
  hypothese: string;
  tekst: string;
}

/** Modelmail voor dossierbeheer. */
export interface Modelbrief {
  id: string;
  titel: string;
  categorie: BriefCategorie;
  /** Vrije omschrijving van de geadresseerde, bv. "cliënt", "confrater", "bank". */
  ontvanger: string;
  taal: BriefTaal;
  /** Id van het anderstalige model waarvan dit een vertaling is. */
  vertalingVanId?: string;
  /** Onderwerpregel, met {{parameter}}-placeholders. */
  onderwerp: string;
  /** Basistekst met {{parameter}}-placeholders; varianten komen erna. */
  tekst: string;
  varianten: BriefVariant[];
  /** Vaste afsluiting (groetformule), na de varianten. */
  slot?: string;
  parameters: BriefParameter[];
  /** Te vermelden bijlagen, bv. "ontwerpakte.pdf". */
  bijlagen?: string[];
  /** Herkomst, bv. "Modelbrieven voor dossierbeheer". */
  bron?: string;
  versie: string;
  datum: string;
  /** True voor modelbrieven die de gebruiker zelf toevoegde (IndexedDB). */
  isGebruiker?: boolean;
}
