// src/collections/FAQs.ts

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

/**
 * FAQs Collection
 *
 * Häufig gestellte Fragen und Antworten, wiederverwendbar auf allen Seiten.
 * Tenant-scoped für Multi-Tenant-Betrieb.
 * Unterstützt Schema.org FAQPage Structured Data für SEO.
 */
export const FAQs: CollectionConfig = {
  slug: 'faqs',
  admin: {
    useAsTitle: 'question',
    group: 'Content',
    defaultColumns: ['question', 'category', 'order', 'isActive'],
    description: 'Häufig gestellte Fragen (FAQ)',
  },
  access: {
    read: tenantScopedPublicRead,
    create: authenticatedOnly,
    update: authenticatedOnly,
    delete: authenticatedOnly,
  },
  fields: [
    {
      name: 'question',
      type: 'text',
      required: true,
      label: 'Frage',
      localized: true,
      admin: {
        description: 'Die Frage, die beantwortet wird',
      },
    },
    {
      name: 'answer',
      type: 'richText',
      required: true,
      label: 'Antwort',
      localized: true,
      admin: {
        description: 'Die ausführliche Antwort auf die Frage',
      },
    },
    {
      name: 'answerPlainText',
      type: 'textarea',
      label: 'Antwort (Nur-Text)',
      localized: true,
      admin: {
        description:
          'Kurzfassung der Antwort als reiner Text für Schema.org Structured Data. Falls leer, wird die Rich-Text-Antwort verwendet.',
      },
    },
    {
      name: 'category',
      type: 'text',
      label: 'Kategorie',
      localized: true,
      admin: {
        description: 'Optionale Kategorie zur Gruppierung (z.B. "Allgemein", "Preise", "Lieferung")',
      },
    },
    {
      name: 'icon',
      type: 'text',
      label: 'Icon',
      admin: {
        description: 'Optionaler Icon-Name (z.B. "question-circle", "info")',
      },
    },
    {
      name: 'relatedFAQs',
      type: 'relationship',
      // eslint-disable-next-line @typescript-eslint/no-explicit-any
      relationTo: 'faqs' as any,
      hasMany: true,
      label: 'Verwandte FAQs',
      admin: {
        description: 'Andere FAQs die thematisch zusammenhängen',
      },
    },
    {
      name: 'isActive',
      type: 'checkbox',
      defaultValue: true,
      label: 'Aktiv/Sichtbar',
      admin: {
        position: 'sidebar',
        description: 'Inaktive FAQs werden nicht angezeigt',
      },
    },
    {
      name: 'isFeatured',
      type: 'checkbox',
      defaultValue: false,
      label: 'Hervorgehoben',
      admin: {
        position: 'sidebar',
        description: 'Hervorgehobene FAQs werden prominent angezeigt',
      },
    },
    {
      name: 'order',
      type: 'number',
      defaultValue: 0,
      label: 'Sortierung',
      admin: {
        position: 'sidebar',
        description: 'Niedrigere Zahlen werden zuerst angezeigt',
      },
    },
  ],
}
