// src/collections/Testimonials.ts

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

/**
 * Testimonials Collection
 *
 * Kundenbewertungen und Referenzen, wiederverwendbar auf allen Seiten.
 * Tenant-scoped für Multi-Tenant-Betrieb.
 */
export const Testimonials: CollectionConfig = {
  slug: 'testimonials',
  admin: {
    useAsTitle: 'author',
    group: 'Content',
    defaultColumns: ['author', 'company', 'rating', 'isActive'],
    description: 'Kundenstimmen und Bewertungen',
  },
  access: {
    read: tenantScopedPublicRead,
    create: authenticatedOnly,
    update: authenticatedOnly,
    delete: authenticatedOnly,
  },
  fields: [
    {
      name: 'quote',
      type: 'textarea',
      required: true,
      label: 'Zitat/Bewertung',
      localized: true,
      admin: {
        description: 'Die Aussage des Kunden',
      },
    },
    {
      name: 'author',
      type: 'text',
      required: true,
      label: 'Name',
      // author bleibt nicht lokalisiert - Name ist sprachunabhängig
    },
    {
      name: 'role',
      type: 'text',
      label: 'Position/Rolle',
      localized: true,
      admin: {
        description: 'z.B. "Patient", "Geschäftsführer", "Marketing Manager"',
      },
    },
    {
      name: 'company',
      type: 'text',
      label: 'Unternehmen/Organisation',
    },
    {
      name: 'image',
      type: 'upload',
      relationTo: 'media',
      label: 'Foto',
      admin: {
        description: 'Portrait-Foto (empfohlen: quadratisch, min. 200x200px)',
      },
    },
    {
      name: 'rating',
      type: 'number',
      min: 1,
      max: 5,
      label: 'Bewertung (1-5 Sterne)',
      admin: {
        description: 'Optional: Sterne-Bewertung',
      },
    },
    {
      name: 'source',
      type: 'text',
      label: 'Quelle',
      admin: {
        description: 'z.B. "Google Reviews", "Trustpilot", "Persönlich"',
      },
    },
    {
      name: 'sourceUrl',
      type: 'text',
      label: 'Link zur Quelle',
      admin: {
        description: 'URL zur Original-Bewertung (falls öffentlich)',
      },
    },
    {
      name: 'date',
      type: 'date',
      label: 'Datum der Bewertung',
      admin: {
        position: 'sidebar',
      },
    },
    {
      name: 'isActive',
      type: 'checkbox',
      defaultValue: true,
      label: 'Aktiv/Sichtbar',
      admin: {
        position: 'sidebar',
        description: 'Inaktive Testimonials werden nicht angezeigt',
      },
    },
    {
      name: 'order',
      type: 'number',
      defaultValue: 0,
      label: 'Sortierung',
      admin: {
        position: 'sidebar',
        description: 'Niedrigere Zahlen werden zuerst angezeigt',
      },
    },
  ],
}
