import { VERPLICHTE_STUKKEN_VERKOOP, type Dossier } from "@/lib/dossier/types";

const STUK_LABEL: Record<string, string> = {
  "hyp-attest": "Hypotheekattest",
  "kad-uittreksel": "Kadastraal uittreksel",
  stedenbouw: "Stedenbouwkundige inlichtingen",
  "bodem-vl": "Bodemattest (OVAM)",
};

// Welke verplichte stukken al binnen zijn, leiden we af uit de aanwezige velden
// in het dossier — geen apart "ontvangen"-vinkje nodig.
export function berekenOntbrekendeStukken(dossier: Dossier): string[] {
  // Het stukkenoverzicht is opgebouwd rond vastgoedopzoekingen en is enkel
  // van toepassing op verkoop-dossiers; schenking/nalatenschap hebben hun
  // eigen, nog niet gemodelleerde stukkenlijst.
  if (dossier.dossiertype !== "verkoop-met-krediet" && dossier.dossiertype !== "verkoop-zonder-krediet") {
    return [];
  }
  const aanwezig = new Set<string>();
  if (dossier.hypothecaireLasten) aanwezig.add("hyp-attest");
  if (dossier.goed?.waarde?.kadastraleGegevens) aanwezig.add("kad-uittreksel");
  if (dossier.stedenbouwInlichtingenOntvangen?.waarde) aanwezig.add("stedenbouw");
  // Zitten de gegevens van het attest zelf al in het dossier (intake), dan is
  // het stuk de facto ontvangen — geen apart vinkje nodig.
  if (dossier.attesten?.stedenbouw?.datum || dossier.attesten?.stedenbouw?.bestemming) aanwezig.add("stedenbouw");
  if (dossier.attesten?.bodem?.datum || dossier.attesten?.bodem?.inhoud) aanwezig.add("bodem-vl");

  return VERPLICHTE_STUKKEN_VERKOOP.filter((id) => !aanwezig.has(id));
}

export function stukLabel(id: string): string {
  return STUK_LABEL[id] ?? id;
}
