// src/collections/PrivacyPolicySettings.ts

import type { CollectionConfig } from 'payload'
import { tenantScopedPublicRead, authenticatedOnly } from '../lib/tenantAccess'

/**
 * PrivacyPolicySettings Collection
 *
 * Konfiguration für externe Datenschutzerklärung (Alfright) pro Tenant.
 * Öffentlich lesbar (für Frontend), aber tenant-isoliert.
 */
export const PrivacyPolicySettings: CollectionConfig = {
  slug: 'privacy-policy-settings',
  admin: {
    useAsTitle: 'title',
    group: 'Consent Management',
    description: 'Externe Datenschutzerklärung Konfiguration (Alfright)',
  },
  access: {
    read: tenantScopedPublicRead,
    create: authenticatedOnly,
    update: authenticatedOnly,
    delete: authenticatedOnly,
  },
  fields: [
    {
      name: 'tenant',
      type: 'relationship',
      relationTo: 'tenants',
      required: true,
      unique: true,
      admin: {
        description: 'Jeder Tenant kann nur eine Konfiguration haben',
      },
    },
    {
      name: 'title',
      type: 'text',
      required: true,
      defaultValue: 'Datenschutzerklärung',
      admin: {
        description: 'Interner Titel zur Identifikation',
      },
    },
    {
      name: 'provider',
      type: 'select',
      required: true,
      defaultValue: 'alfright',
      options: [
        { label: 'Alfright (extern via iframe)', value: 'alfright' },
        { label: 'Eigener Text (nicht implementiert)', value: 'internal' },
      ],
      admin: {
        description: 'Quelle der Datenschutzerklärung',
      },
    },

    // Alfright Konfiguration
    {
      name: 'alfright',
      type: 'group',
      label: 'Alfright Konfiguration',
      admin: {
        condition: (data) => data?.provider === 'alfright',
        description: 'Einstellungen für die Alfright Integration',
      },
      fields: [
        {
          name: 'tenantId',
          type: 'text',
          required: true,
          defaultValue: 'alfright_schutzteam',
          admin: {
            description: 'Alfright Tenant-ID (aus dem iframe-Code)',
          },
        },
        {
          name: 'apiKey',
          type: 'text',
          required: true,
          admin: {
            description: 'Alfright API-Key / Dokument-ID (aus dem iframe-Code, z.B. "9f315103c43245bcb0806dd56c2be757")',
          },
        },
        {
          name: 'language',
          type: 'select',
          required: true,
          defaultValue: 'de-de',
          options: [
            { label: 'Deutsch (Deutschland)', value: 'de-de' },
            { label: 'Deutsch (Österreich)', value: 'de-at' },
            { label: 'Deutsch (Schweiz)', value: 'de-ch' },
            { label: 'Englisch (UK)', value: 'en-gb' },
            { label: 'Englisch (US)', value: 'en-us' },
          ],
          admin: {
            description: 'Sprache der Datenschutzerklärung',
          },
        },
        {
          name: 'iframeHeight',
          type: 'number',
          required: true,
          defaultValue: 4000,
          min: 500,
          max: 10000,
          admin: {
            description: 'Höhe des iframes in Pixeln (empfohlen: 3000-5000)',
          },
        },
      ],
    },

    // Styling (passend zum Website-Theme)
    {
      name: 'styling',
      type: 'group',
      label: 'Styling',
      admin: {
        condition: (data) => data?.provider === 'alfright',
        description: 'Farben und Schriften an das Website-Design anpassen',
      },
      fields: [
        {
          name: 'headerColor',
          type: 'text',
          required: true,
          defaultValue: '#ca8a04',
          admin: {
            description: 'Farbe der Überschriften (Hex-Code, z.B. #ca8a04 für Gold)',
          },
        },
        {
          name: 'headerFont',
          type: 'text',
          required: true,
          defaultValue: 'Inter, sans-serif',
          admin: {
            description: 'Schriftart der Überschriften',
          },
        },
        {
          name: 'headerSize',
          type: 'text',
          required: true,
          defaultValue: '24px',
          admin: {
            description: 'Schriftgröße der Hauptüberschriften',
          },
        },
        {
          name: 'subheaderSize',
          type: 'text',
          required: true,
          defaultValue: '18px',
          admin: {
            description: 'Schriftgröße der Unterüberschriften',
          },
        },
        {
          name: 'fontColor',
          type: 'text',
          required: true,
          defaultValue: '#f3f4f6',
          admin: {
            description: 'Textfarbe (Hex-Code, z.B. #f3f4f6 für hellen Text)',
          },
        },
        {
          name: 'textFont',
          type: 'text',
          required: true,
          defaultValue: 'Inter, sans-serif',
          admin: {
            description: 'Schriftart für Fließtext',
          },
        },
        {
          name: 'textSize',
          type: 'text',
          required: true,
          defaultValue: '16px',
          admin: {
            description: 'Schriftgröße für Fließtext',
          },
        },
        {
          name: 'linkColor',
          type: 'text',
          required: true,
          defaultValue: '#ca8a04',
          admin: {
            description: 'Linkfarbe (Hex-Code)',
          },
        },
        {
          name: 'backgroundColor',
          type: 'text',
          required: true,
          defaultValue: '#111827',
          admin: {
            description: 'Hintergrundfarbe (Hex-Code, z.B. #111827 für Dark Theme)',
          },
        },
      ],
    },

    // Cookie-Tabelle Option
    {
      name: 'showCookieTable',
      type: 'checkbox',
      defaultValue: true,
      admin: {
        description: 'Cookie-Tabelle aus CookieInventory unterhalb der Datenschutzerklärung anzeigen',
      },
    },
    {
      name: 'cookieTableTitle',
      type: 'text',
      defaultValue: 'Übersicht der verwendeten Cookies',
      admin: {
        condition: (data) => data?.showCookieTable,
        description: 'Überschrift für die Cookie-Tabelle',
      },
    },
    {
      name: 'cookieTableDescription',
      type: 'textarea',
      defaultValue: 'Ergänzend zur Datenschutzerklärung finden Sie hier eine detaillierte Übersicht aller auf dieser Website eingesetzten Cookies. Sie können Ihre Cookie-Einstellungen jederzeit über den Link "Cookie-Einstellungen" im Footer anpassen.',
      admin: {
        condition: (data) => data?.showCookieTable,
        description: 'Einleitungstext für die Cookie-Tabelle',
      },
    },

    // SEO
    {
      name: 'seo',
      type: 'group',
      label: 'SEO',
      fields: [
        {
          name: 'metaTitle',
          type: 'text',
          defaultValue: 'Datenschutzerklärung',
          admin: {
            description: 'Meta-Titel für die Seite',
          },
        },
        {
          name: 'metaDescription',
          type: 'textarea',
          defaultValue: 'Informationen zum Datenschutz und zur Verarbeitung Ihrer personenbezogenen Daten.',
          admin: {
            description: 'Meta-Beschreibung für Suchmaschinen',
          },
        },
      ],
    },
  ],
}
