import { redirect } from 'next/navigation'
import { getUserSession } from '@/lib/auth/permissions'
import { createClient } from '@/lib/supabase/server'
import AppHeader from '@/components/layout/app-header'
import IntakeFieldsClient from '@/components/admin/intake-fields-client'
import type { FieldDefinition } from '@/lib/intake/field-builder'

export const dynamic = 'force-dynamic'

export default async function IntakeFieldsAdminPage() {
  const session = await getUserSession()
  if (!session) redirect('/login')
  if (session.role !== 'admin' && session.role !== 'masteradmin') {
    redirect('/projektanlage')
  }

  const supabase = await createClient()
  const { data, error } = await supabase
    .from('intake_field_definitions')
    .select(
      'id, field_key, block, sort_order, label_de, label_en, helptext_de, helptext_en, field_type, is_required, is_active, visible_if',
    )
    .order('block', { ascending: true })
    .order('sort_order', { ascending: true })

  const definitions = (data ?? []) as FieldDefinition[]

  return (
    <>
      <AppHeader title="Intake-Felder verwalten" backHref="/admin/users" />
      <main className="max-w-6xl mx-auto px-4 py-6 pb-24 md:pb-8">
        {error ? (
          <p className="text-sm text-destructive">Fehler beim Laden: {error.message}</p>
        ) : (
          <IntakeFieldsClient initialDefinitions={definitions} />
        )}
      </main>
    </>
  )
}
