// Documents — shared data for the redesigned documents area.
// Quick-text templates (WhatsApp / Kleinanzeigen ready),
// kind metadata, and shared fill helpers.

// ── Quick-text templates ──
// These are short, copy-to-clipboard messages, NOT formal PDFs.
const QUICK_TEXT_TEMPLATES = [
  {
    id: 'reservation', name: 'Reservierungsbestätigung', icon: '📋', color: '#007AFF', kind: 'reservierung',
    desc: 'Bestätigung an den Mieter senden',
    body: `Hallo {{name}},

vielen Dank für deine Reservierung!

📅 Zeitraum: {{zeitraum}}
🎤 Equipment: {{equipment}}
💰 Gesamtpreis: {{preis}}
🔒 Kaution: {{kaution}}

Bitte zur Übergabe einen gültigen Ausweis mitbringen.

Bei Fragen einfach melden.

Viele Grüße
{{firma}}`,
  },
  {
    id: 'handover', name: 'Übergabe-Info', icon: '📦', color: '#34C759', kind: 'protokoll',
    desc: 'Kurz vor Abholung verschicken',
    body: `Hallo {{name}},

morgen ist die Abholung von {{equipment}}.

🕐 Uhrzeit: {{startzeit}} Uhr
📍 Adresse: {{firma_adresse}}
🪪 Bitte Ausweis mitbringen
💰 Kaution: {{kaution}} (bar oder Überweisung)

Bis morgen!
{{firma}}`,
  },
  {
    id: 'return', name: 'Rückgabe-Erinnerung', icon: '↩️', color: '#FF9500', kind: 'rueckgabe',
    desc: 'Mieter an Rückgabe erinnern',
    body: `Hallo {{name}},

kurze Erinnerung: die Rückgabe von {{equipment}} ist am {{ende}} bis {{endezeit}} Uhr.

Bitte vollzählig und in sauberem Zustand zurückbringen.

Bis dann
{{firma}}`,
  },
  {
    id: 'kleinanzeigen', name: 'Kleinanzeigen-Inserat', icon: '📢', color: '#AF52DE', kind: 'inserat',
    desc: 'Vorlage für Equipment-Anzeige',
    body: `🎤 {{equipment}} zu vermieten — ab {{tagespreis}}/Tag

✅ {{equipment_sub}}
✅ Komplett mit Zubehör
✅ Lieferung gegen Aufpreis möglich

🔒 Kaution: {{kaution}}

Standort: {{firma_adresse}}

Bei Interesse einfach melden!`,
  },
  {
    id: 'reminder', name: 'Zahlungserinnerung', icon: '💶', color: '#FF3B30', kind: 'erinnerung',
    desc: 'Bei offener Zahlung',
    body: `Hallo {{name}},

unsere Rechnung über {{preis}} für die Vermietung von {{equipment}} ({{zeitraum}}) ist noch offen.

Bitte überweise den Betrag auf:
{{iban}}
Verwendungszweck: {{rechnungsnr}}

Vielen Dank!
{{firma}}`,
  },
];

// ── Kind metadata used across the documents area ──
const DOC_KINDS = {
  vertrag:       { label: 'Mietvertrag',          icon: 'fileText', color: '#007AFF' },
  rechnung:      { label: 'Rechnung',             icon: 'invoice',  color: '#34C759' },
  protokoll:     { label: 'Übergabeprotokoll',    icon: 'doc',      color: '#AF52DE' },
  rueckgabe:     { label: 'Rückgabeprotokoll',    icon: 'doc',      color: '#FF9500' },
  reservierung:  { label: 'Reservierung',         icon: 'mail',     color: '#5856D6' },
  erinnerung:    { label: 'Erinnerung',           icon: 'bell',     color: '#FF3B30' },
  inserat:       { label: 'Inserat',              icon: 'tag',      color: '#AF52DE' },
  custom:        { label: 'Sonstiges',            icon: 'folder',   color: '#8E8E93' },
};
const docKindMeta = (k) => DOC_KINDS[k] || DOC_KINDS.custom;

// ── Fill placeholders for quick-text and template bodies ──
function fillQuickText(text, r, eq, company) {
  if (!text || !r) return text || '';
  const days = daysBetween(r.start, r.end);
  const vars = {
    name: r.tenantName,
    adresse: (r.address || '').replace(/\n/g, ', '),
    email: r.email || '',
    telefon: r.phone || '',
    ausweis: r.idCard || '',
    equipment: eq ? eq.name : (r.equipmentName || ''),
    equipment_sub: eq ? (eq.sub || eq.cat || '') : '',
    zeitraum: fmtRange(r.start, r.end),
    start: fmtDateDE(r.start),
    ende: fmtDateDE(r.end),
    startzeit: r.startTime || '—',
    endezeit: r.endTime || '—',
    tage: days + ' Tag' + (days > 1 ? 'e' : ''),
    preis: rentalTotal(r) + ' €',
    tagespreis: (r.dailyRate || (eq && eq.price) || 0) + ' €',
    kaution: (r.deposit || 0) + ' €',
    zweck: r.purpose || 'Vermietung',
    datum: fmtDateDE(todayISO()),
    firma: company.name,
    firma_adresse: `${company.street}, ${company.city}`,
    iban: company.iban,
    rechnungsnr: 'RE-2026-' + (r.id || '').replace(/\D/g, '').padStart(3, '0'),
    vertragsnr: 'MV-2026-' + (r.id || '').replace(/\D/g, '').padStart(3, '0'),
  };
  let out = text;
  for (const [k, v] of Object.entries(vars)) {
    out = out.split('{{' + k + '}}').join(v == null ? '' : String(v));
  }
  return out;
}

// ── Quick-text "placeholders available" hints ──
const QUICK_TOKENS = [
  ['name', 'Name des Mieters'],
  ['equipment', 'Equipment'],
  ['equipment_sub', 'Equipment-Specs'],
  ['zeitraum', 'Zeitraum'],
  ['start', 'Startdatum'],
  ['ende', 'Enddatum'],
  ['startzeit', 'Abholzeit'],
  ['endezeit', 'Rückgabezeit'],
  ['tage', 'Mietdauer'],
  ['preis', 'Gesamtpreis'],
  ['tagespreis', 'Tagespreis'],
  ['kaution', 'Kaution'],
  ['zweck', 'Zweck'],
  ['datum', 'Heutiges Datum'],
  ['adresse', 'Mieter-Adresse'],
  ['email', 'Mieter-E-Mail'],
  ['telefon', 'Mieter-Telefon'],
  ['ausweis', 'Ausweis-Nr.'],
  ['firma', 'Firma'],
  ['firma_adresse', 'Firmen-Adresse'],
  ['iban', 'IBAN'],
  ['rechnungsnr', 'Rechnungs-Nr.'],
  ['vertragsnr', 'Vertrags-Nr.'],
];

Object.assign(window, {
  QUICK_TEXT_TEMPLATES, QUICK_TOKENS, DOC_KINDS, docKindMeta, fillQuickText,
});
