import { db } from '@/lib/db'
import { de } from '@/lib/i18n/de'
import { collectPersonnelDossier, type Dossier } from '@/lib/export/dossier'
import { CaseSheet } from '@/components/print/CaseSheet'
import { DocumentSheet } from '@/components/print/DocumentSheet'
import { PersonnelSheet, type PersonnelForPrint } from '@/components/print/PersonnelSheet'
import type { EffectivePermissions } from '@/lib/auth/permissions'
/**
* Ein Dossier: die Personalakte, dahinter ihre Dokumente, dahinter die
* Fallakten, in denen die Person vorkommt.
*
* Die Reihenfolge ist die Vorgabe und keine Geschmacksfrage - wer eine Akte
* aufschlägt, will zuerst wissen, um wen es geht.
*
* Der Vermerk über das Weggelassene steht **vorn**, gleich hinter der Akte,
* nicht am Ende: wer die letzten Seiten nicht liest, muss trotzdem erfahren,
* dass die Mappe gekürzt ist.
*/
export async function DossierBody({
permissions,
displayName,
akte,
cap,
/** Im Abteilungsbogen steht der Deckel schon vorn. */
withCover = true,
}: {
permissions: EffectivePermissions
displayName: string
akte: PersonnelForPrint
cap: number
withCover?: boolean
}) {
const [inhalt, autoren] = await Promise.all([
collectPersonnelDossier(permissions, { id: akte.id, userId: akte.userId }, cap),
db.user.findMany({ select: { id: true, displayName: true } }),
])
const nameVon = new Map(autoren.map((a) => [a.id, a.displayName]))
return (
<>
{de.export.noDocuments}
) : ( inhalt.documents.map((doc, index) => ({de.export.noCases}
) : ( inhalt.cases.map((akte, index) => ({de.export.omittedHeading}
{inhalt.omittedTotal > 0 ? ( <>{de.export.omittedNote(eigeneStufe)}
{de.export.truncated}
) : null}