import type { Metadata } from 'next'
import { db } from '@/lib/db'
import { visiblePersonnelWhere } from '@/lib/access/personnelFilter'
import { permissionsForPrint } from '@/lib/export/printAccess'
import { effectiveCap } from '@/lib/export/dossier'
import { DossierBody } from '@/components/print/DossierBody'
import { de } from '@/lib/i18n/de'
import { NotAvailable } from '../../../NotAvailable'
export const dynamic = 'force-dynamic'
export const metadata: Metadata = {
title: de.export.dossier,
robots: { index: false, follow: false },
}
/**
* Druckansicht einer Personalakte als vollständiges Dossier.
*
* Alles in **einer** Seite und nicht als mehrere zusammengeheftete PDFs: die
* Druckansicht ist ohnehin die einzige Vorlage, und so laufen Seitenzahlen,
* Wasserzeichen und Kopfzeile durch. Ein PDF-Zusammenfüger wäre ein zweiter
* Weg, der irgendwann anders aussieht als der erste.
*
* `stufe` deckelt, was aufgenommen wird. Der Wert wird hier **erneut** auf die
* Stufe des Abrufers gedeckelt und nicht bloss übernommen: er steht in der
* Adresse, und eine Adresse ist eine Eingabe.
*/
export default async function PrintPersonnelDossierPage({
params,
searchParams,
}: {
params: Promise<{ id: string }>
searchParams: Promise<{ token?: string; stufe?: string }>
}) {
const { id } = await params
const { token, stufe } = await searchParams
const zugang = await permissionsForPrint(token)
if (!zugang) return
const { permissions, displayName } = zugang
const akte = await db.personnelFile.findFirst({
where: { AND: [visiblePersonnelWhere(permissions), { id }] },
select: {
id: true,
userId: true,
displayName: true,
rank: true,
classification: true,
statusTags: true,
note: true,
createdAt: true,
department: { select: { key: true, name: true } },
},
})
if (!akte) return
const cap = effectiveCap(permissions, Number(stufe ?? permissions.clearanceLevel))
return (
)
}