import { NextRequest, NextResponse } from 'next/server' import { requireAdmin } from '@/lib/require-admin' import { DEFAULTED_FIELDS, DEFAULTED_FIELD_LABELS, REQUIRED_DEFAULTED_FIELDS } from '@/lib/policy-defaults' import { readPolicyDefaults } from '@/lib/policy-defaults.server' // Prisma client instance import { prisma } from "@/lib/prisma" // GET /api/policy-defaults - liefert die zentralen Standardtexte export async function GET() { try { const defaults = await readPolicyDefaults(prisma) return NextResponse.json(defaults) } catch (error) { console.error('Error fetching policy defaults:', error) return NextResponse.json( { error: 'Fehler beim Abrufen der Standardtexte' }, { status: 500 } ) } } // PUT /api/policy-defaults - speichert die zentralen Standardtexte (Admin) export async function PUT(request: NextRequest) { try { const denied = await requireAdmin() if (denied) return denied const data = await request.json() // Die Pflicht-Bausteine dürfen im Standard nicht leer bleiben – sonst // fehlen sie in jeder Erklärung, die keinen eigenen Text hinterlegt hat. const errors = REQUIRED_DEFAULTED_FIELDS.filter( (field) => !String(data[field] ?? '').trim() ).map((field) => `${DEFAULTED_FIELD_LABELS[field]} ist erforderlich`) if (errors.length > 0) { return NextResponse.json( { error: 'Validierungsfehler', details: errors }, { status: 400 } ) } // Nur die bekannten Felder übernehmen, jeweils getrimmt. const values = Object.fromEntries( DEFAULTED_FIELDS.map((field) => [field, String(data[field] ?? '').trim()]) ) const saved = await prisma.policyDefaults.upsert({ where: { id: 1 }, update: values, create: { id: 1, ...values }, }) return NextResponse.json(saved) } catch (error) { console.error('Error updating policy defaults:', error) return NextResponse.json( { error: 'Fehler beim Speichern der Standardtexte' }, { status: 500 } ) } }