import type { ContractTemplateSection } from "@/models/ContractTemplate";

// Startbefüllung beim ersten Laden der Vorlagen-Verwaltung — danach liegt
// der tatsächliche Text in der Datenbank (ContractTemplate) und wird dort
// bearbeitet, diese Konstanten wirken sich auf bereits erstellte Vorlagen
// nicht mehr aus. Der TFP-Text stammt aus der alten Word-Vorlage
// ("Rakku_Photography_TFP_Vertrag..."), der Standard-Vertrag wurde in
// gleicher Ausführlichkeit neu formuliert. Rein datengetriebene Angaben
// (Parteien, Preis, Termin, Ort, gewählte Nutzungsrechte-Option, Model-/
// Stylist-Daten, Bildauswahl-Checkboxen) bleiben bewusst außerhalb dieser
// Vorlage — die kommen weiterhin direkt aus dem jeweiligen Auftrag/Vertrag,
// siehe contractPdf.tsx.

// Wandelt die Markdown-Zwischenüberschriften der AGB-Seite ("## 1. Titel")
// in normalen Fließtext um — react-pdf kennt kein Markdown, aber die
// Nummerierung bleibt als Orientierung im Text erhalten.
function stripMarkdownHeadings(markdown: string): string {
  return markdown.replace(/^##\s+/gm, "");
}

export function defaultAgbSection(agbMarkdown: string, agbMarkdownEn = ""): ContractTemplateSection {
  return {
    heading: "Allgemeine Geschäftsbedingungen (AGB)",
    body:
      "Ergänzend zu diesem Vertrag gelten die Allgemeinen Geschäftsbedingungen von Rakku Photography in der zum Zeitpunkt des Vertragsschlusses gültigen Fassung (siehe auch rakku.de/agb):\n\n" +
      stripMarkdownHeadings(agbMarkdown.trim()),
    headingEn: agbMarkdownEn ? "Terms and Conditions" : "",
    bodyEn: agbMarkdownEn
      ? "In addition to this contract, the General Terms and Conditions of Rakku Photography apply, in the version valid at the time the contract was concluded (see also rakku.de/agb):\n\n" +
        stripMarkdownHeadings(agbMarkdownEn.trim())
      : "",
    // Anhang statt normale Klausel — wird nach der Unterschrift auf einer
    // eigenen neuen Seite angehängt, siehe contractPdf.tsx.
    appendix: true,
  };
}

// Wählt pro Abschnitt die passende Sprachfassung fürs PDF-Rendern — fällt
// bei fehlender/leerer englischer Übersetzung bewusst auf die deutsche
// Fassung zurück (statt eine leere Lücke im Vertrag zu lassen), siehe
// Kommentar an ContractTemplateSection.headingEn in models/ContractTemplate.ts.
export function resolveSectionsForLocale(
  sections: ContractTemplateSection[],
  locale: "de" | "en"
): { heading: string; body: string; appendix?: boolean }[] {
  if (locale === "de") return sections;
  return sections.map((s) => ({
    heading: s.headingEn?.trim() || s.heading,
    body: s.bodyEn?.trim() || s.body,
    appendix: s.appendix,
  }));
}

export const DEFAULT_TFP_SECTIONS: ContractTemplateSection[] = [
  {
    heading: "1. Gegenstand des Vertrags",
    body: 'TFP bedeutet „Time for Pictures". Das Model stellt Zeit und Mitwirkung zur Verfügung. Der Fotograf erstellt, wählt aus und bearbeitet Fotos. Eine finanzielle Vergütung findet nicht statt, sofern nichts anderes schriftlich vereinbart wurde.',
  },
  {
    heading: "2. Ablauf des Shootings",
    body: "Das Shooting findet nach gemeinsamer Absprache statt. Beide Parteien verpflichten sich zu einem respektvollen, professionellen und zuverlässigen Umgang miteinander.\n\nDas Model ist für Kleidung, Cosplay, Make-up, Accessoires und Requisiten selbst verantwortlich, sofern nichts anderes vereinbart wurde. Der Fotograf ist für die fotografische Umsetzung, Bildauswahl und Bearbeitung der finalen Bilder verantwortlich.",
  },
  {
    heading: "3. Bildauswahl und Bearbeitung",
    body: "Der Fotograf trifft die finale Auswahl der zu bearbeitenden Bilder. Das Model erhält eine Auswahl final bearbeiteter Bilder in digitaler Form. Ein Anspruch auf Herausgabe aller Rohdaten, RAW-Dateien oder unbearbeiteter Bilder besteht nicht. Die Bearbeitung erfolgt im Stil von Rakku Photography.\n\nErlaubt sind leichte Zuschnitte und Format-Anpassungen für Social Media. Nicht erlaubt sind ohne vorherige Zustimmung insbesondere das Entfernen eines Logos/Wasserzeichens, starke Filter, KI-Bearbeitungen, KI-Erweiterungen, Weiterverkauf oder eine Nutzung in beleidigenden, politischen, pornografischen, extremistischen oder rufschädigenden Kontexten.",
  },
  {
    heading: "4. Nutzungsrechte des Fotografen",
    body: "Das Model willigt ein, dass der Fotograf die entstandenen Bilder zeitlich und räumlich unbeschränkt für eigene Portfolio- und Eigenwerbungszwecke nutzen darf.\n\nEine Weitergabe oder ein Verkauf der Bilder an Dritte zu Werbezwecken erfolgt nur nach zusätzlicher schriftlicher Zustimmung des Models. Eine entwürdigende, diskriminierende, pornografische, extremistische oder bewusst rufschädigende Nutzung ist ausgeschlossen.",
  },
  {
    heading: "5. Nutzungsrechte des Models",
    // Der Satz zur Nennungs-/Verlinkungspflicht steht nicht mehr fest hier,
    // sondern wird abhängig von "photographerCreditRequired" (siehe
    // TfpContractForm.tsx) direkt unter den Angaben zum Shooting erzeugt —
    // sonst würde hier immer dieselbe Pflicht behauptet, unabhängig davon,
    // was für dieses konkrete Shooting tatsächlich vereinbart wurde.
    body: "Das Model erhält ein einfaches, nicht exklusives Nutzungsrecht an den final bearbeiteten Bildern für private und eigene nicht-kommerzielle Zwecke. Erlaubt sind insbesondere Social-Media-Profile, Posts, Stories, Reels, Profilbilder, private Webseiten, Cosplay-Portfolios, Bewerbungen im Cosplay-/Model-/Creator-Bereich und private Ausdrucke.\n\nAls kommerzielle Nutzung gelten insbesondere Verkauf von Prints, Merchandise, bezahlte Werbung, Nutzung durch Firmen/Marken/Agenturen oder Veröffentlichung in kostenpflichtigen Inhalten; diese ist nur nach vorheriger schriftlicher Absprache gestattet.",
  },
  {
    heading: "6. Veröffentlichung und Einwilligung",
    body: "Das Model willigt ein, dass die im Rahmen des Shootings entstandenen Bilder im vereinbarten Umfang (siehe gewünschte Kanäle oben) veröffentlicht werden dürfen.",
  },
  {
    heading: "7. Namensnennung, Styling-Credit und Verlinkung",
    body: "Model und Stylist/in können bei Veröffentlichungen genannt oder verlinkt werden, sofern dies gewünscht ist (siehe Credit-Wunsch oben). Die Nennung erfolgt nach Möglichkeit passend zur Plattform.",
  },
  {
    heading: "8. Stylist/in, Make-up und Hair",
    body: "Sofern eine Styling-Person beteiligt ist, bleibt sie für ihre eigene Leistung, Materialien, Hygiene, Absprachen und ggf. eigene Portfolio-Nutzung verantwortlich. Eine Veröffentlichung von Behind-the-Scenes-Material, Making-of-Videos oder Styling-Zwischenschritten erfolgt nur nach Absprache mit den erkennbaren Personen.\n\nDie Stylistin / der Stylist erhält keine automatischen Nutzungsrechte an den finalen Bildern, sofern dies nicht ausdrücklich vereinbart wurde. Eine eigene Nutzung für Portfolio oder Social Media ist nur im vereinbarten Umfang erlaubt.",
  },
  {
    heading: "9. Begleitpersonen",
    body: "Das Model darf nach vorheriger Absprache eine Begleitperson mitbringen. Die Begleitperson darf den Ablauf nicht stören und erhält keine eigenen Nutzungsrechte. Wird die Begleitperson erkennbar abgebildet, ist eine gesonderte Einwilligung erforderlich.",
  },
  {
    heading: "10. Minderjährige Models",
    body: "Shootings mit minderjährigen Personen sind nur mit schriftlicher Zustimmung der gesetzlichen Vertreter erlaubt. Bei minderjährigen Models müssen die gesetzlichen Vertreter zusätzlich unterschreiben.",
  },
  {
    heading: "11. Absage, Verspätung und Ausfall",
    body: 'Kann eine Partei den Termin nicht wahrnehmen, informiert sie die andere Partei so früh wie möglich. Bei Krankheit, höherer Gewalt, schlechtem Wetter, Eventausfall oder anderen wichtigen Gründen kann der Termin verschoben werden. Da es sich um ein TFP-Shooting ohne Vergütung handelt, bestehen bei Absage grundsätzlich keine gegenseitigen Schadensersatzansprüche, sofern keine vorsätzliche oder grob fahrlässige Pflichtverletzung vorliegt.',
  },
  {
    heading: "12. Urheberrecht, Rohdaten und Eigentum",
    body: "Der Fotograf bleibt Urheber der erstellten Bilder. Das Model erhält ausschließlich die final bearbeiteten Bilder zur Nutzung im vereinbarten Umfang. RAW-Dateien, unbearbeitete Bilder oder vollständige Bildserien werden nicht herausgegeben, sofern dies nicht ausdrücklich schriftlich vereinbart wurde.",
  },
  {
    heading: "13. Datenschutz",
    body: "Die für Planung, Durchführung, Bearbeitung, Archivierung und vereinbarte Veröffentlichung notwendigen personenbezogenen Daten dürfen verarbeitet werden. Dazu gehören Name, Kontaktdaten, Social-Media-Handles, Shootingdaten und Bildmaterial. Gesetzliche Rechte nach der DSGVO bleiben unberührt.",
  },
  {
    heading: "14. Widerruf / Einschränkung der Nutzung",
    body: "Ein Widerruf oder eine Einschränkung kann für zukünftige Veröffentlichungen schriftlich erklärt werden. Bereits erfolgte Veröffentlichungen im Internet können nicht immer vollständig rückgängig gemacht werden, insbesondere wenn Inhalte geteilt, gespeichert oder von Suchmaschinen erfasst wurden. Bereits gedruckte Materialien, archivierte Beiträge oder bereits veröffentlichte Inhalte müssen nicht rückwirkend entfernt werden, sofern keine zwingenden rechtlichen Gründe entgegenstehen.",
  },
  // Abschnitt 15 (AGB) wird beim Seeden dynamisch per defaultAgbSection() angehängt.
  {
    heading: "16. Schlussbestimmungen",
    body: "Änderungen oder Ergänzungen dieses Vertrags bedürfen der Textform. Sollten einzelne Bestimmungen dieses Vertrags unwirksam sein oder werden, bleibt die Wirksamkeit der übrigen Bestimmungen unberührt. Es gilt deutsches Recht.",
  },
];

export const DEFAULT_STANDARD_SECTIONS: ContractTemplateSection[] = [
  {
    heading: "2. Ablauf & Leistungsumfang",
    body: "Das Shooting findet nach gemeinsamer Absprache statt. Beide Parteien verpflichten sich zu einem respektvollen, professionellen und zuverlässigen Umgang miteinander. Der Auftragnehmer erstellt, wählt aus und bearbeitet die finalen Bilder. Ein Anspruch auf Herausgabe aller Rohdaten (RAW) besteht nicht.\n\nErlaubt sind leichte Zuschnitte und Format-Anpassungen für Social Media. Nicht erlaubt sind ohne vorherige Zustimmung insbesondere das Entfernen eines Logos/Wasserzeichens, starke Filter, KI-Bearbeitungen, KI-Erweiterungen, Weiterverkauf oder eine Nutzung in beleidigenden, politischen, pornografischen, extremistischen oder rufschädigenden Kontexten.",
  },
  {
    heading: "4. Zahlungsbedingungen",
    body: "Der vereinbarte Preis ist nach Lieferung der bearbeiteten Bilder fällig und innerhalb der auf der Rechnung genannten Frist per Überweisung oder über die auf der Rechnung angegebene Online-Zahlungsmöglichkeit zu begleichen. Eine gesonderte Rechnung wird gestellt. Bei Zahlungsverzug können Mahngebühren gemäß der jeweils aktuellen Mahnstufe anfallen. Bis zur vollständigen Bezahlung werden Vorschaubilder ausschließlich mit sichtbarem Wasserzeichen zur Verfügung gestellt.",
  },
  {
    heading: "5. Absage, Terminverschiebung & Rücktritt",
    body: 'Eine kostenfreie Terminverschiebung ist möglich, wenn sie mindestens 7 Tage vor dem vereinbarten Termin angefragt wird, vorbehaltlich freier Kapazitäten. Bei einer Absage durch den Auftraggeber weniger als 48 Stunden vor dem Termin oder bei Nichterscheinen ("No-Show") kann eine Ausfallpauschale von bis zu 50 % des vereinbarten Preises in Rechnung gestellt werden, sofern der Termin nicht anderweitig belegt werden konnte. Muss der Auftragnehmer selbst absagen (z. B. wegen Krankheit oder höherer Gewalt), wird ein Ersatztermin angeboten oder eine bereits geleistete Anzahlung vollständig erstattet.',
  },
  {
    heading: "6. Datenschutz",
    body: "Die für Planung, Durchführung und Bearbeitung notwendigen personenbezogenen Daten dürfen verarbeitet werden. Gesetzliche Rechte nach der DSGVO bleiben unberührt.",
  },
  // Abschnitt 7 (AGB) wird beim Seeden dynamisch per defaultAgbSection() angehängt.
  {
    heading: "8. Schlussbestimmungen",
    body: "Änderungen oder Ergänzungen dieses Vertrags bedürfen der Textform. Sollten einzelne Bestimmungen unwirksam sein, bleibt die Wirksamkeit der übrigen Bestimmungen unberührt. Es gilt deutsches Recht.",
  },
];
