import { eq } from 'drizzle-orm'
import { db } from '@/db'
import { tenantConfigs } from '@/db/schema'
import { getI18nForUserId } from '@/lib/i18n/server'
import { I18nProvider } from '@/lib/i18n/client'
import { requireAdminUser } from '@/lib/role-guard'
import ConfigForm from './ConfigForm'

export default async function AdminConfigPage() {
  const admin = await requireAdminUser()
  const i18n = await getI18nForUserId(admin.id)
  const t = i18n.t

  const [config] = await db
    .select()
    .from(tenantConfigs)
    .where(eq(tenantConfigs.tenantId, admin.tenantId))
    .limit(1)

  if (!config) {
    return (
      <main className="min-h-screen bg-zinc-50 px-4 py-10 dark:bg-zinc-950">
        <div className="mx-auto max-w-2xl">
          <p className="text-sm text-red-600 dark:text-red-400">{t('adminConfig.missing')}</p>
        </div>
      </main>
    )
  }

  return (
    <I18nProvider language={i18n.language} dictionary={i18n.dictionary}>
      <main className="min-h-screen bg-zinc-50 px-4 py-10 text-zinc-950 dark:bg-zinc-950 dark:text-zinc-100">
        <div className="mx-auto max-w-2xl space-y-8">
          <div>
            <h1 className="text-2xl font-semibold text-zinc-950 dark:text-white">{t('adminConfig.title')}</h1>
            <p className="mt-1 text-sm text-zinc-500 dark:text-zinc-400">
              {t('adminConfig.intro')}
            </p>
          </div>

          <div className="rounded-lg border border-zinc-200 bg-white p-6 dark:border-zinc-800 dark:bg-zinc-900">
            <ConfigForm
              initial={{
                submissionPromptText: config.submissionPromptText,
                additionalInfoPromptText: config.additionalInfoPromptText,
                submissionMaxChars: config.submissionMaxChars,
                aiProvider: config.aiProvider,
                aiModel: config.aiModel,
                aiTemperature: config.aiTemperature,
                minInfoScoreThreshold: config.minInfoScoreThreshold,
                maxClarificationCycles: config.maxClarificationCycles,
                aiJobTimeoutSeconds: config.aiJobTimeoutSeconds,
                dataProcessingConsent: config.dataProcessingConsent,
              }}
            />
          </div>
        </div>
      </main>
    </I18nProvider>
  )
}
