import type { Metadata } from 'next' import Link from 'next/link' import { notFound } from 'next/navigation' import { db } from '@/lib/db' import { requirePermission } from '@/lib/auth/current' import { loadVisiblePersonnelFile } from '@/lib/personnel/service' import { de } from '@/lib/i18n/de' import { ExportPanel } from '@/components/export/ExportPanel' export const metadata: Metadata = { title: de.export.dossierHeading } export const dynamic = 'force-dynamic' /** * Dossier einer Person als PDF. * * Eigene Seite wie beim Fallexport: die Personalakte ist voll, und die Wahl * der Höchststufe braucht Platz und eine Erklärung. Siehe * docs/13-entscheidungen.md. */ export default async function PersonnelExportPage({ params, }: { params: Promise<{ id: string }> }) { const user = await requirePermission('personnel.read') const { id } = await params const akte = await loadVisiblePersonnelFile(user.permissions, id) if (!akte) notFound() // Nur Stufen anbieten, die der Abrufer selbst hat. Eine Auswahl, die er // ohnehin nicht bekommt, wäre eine Falle - und der Dienst deckelt sie später // stillschweigend weg. const stufen = await db.clearanceLevelConfig.findMany({ where: user.permissions.isAdmin ? {} : { level: { lte: user.permissions.clearanceLevel } }, orderBy: { level: 'asc' }, select: { level: true, name: true }, }) return (
{de.export.dossierIntro}
{de.export.print}