import type { Metadata } from 'next' import { notFound } from 'next/navigation' import { db } from '@/lib/db' import { requireUser } from '@/lib/auth/current' import { visiblePersonnelWhere } from '@/lib/access/personnelFilter' import { canEditCase } from '@/lib/access/caseWrite' import { loadVisibleCase } from '@/lib/cases/service' import { listParticipants } from '@/lib/cases/participants' import { listLinks } from '@/lib/cases/links' import { de } from '@/lib/i18n/de' import { Participants } from '../Participants' import { CaseLinks } from '../CaseLinks' export const metadata: Metadata = { title: de.case.tabRelations } export const dynamic = 'force-dynamic' /** * Wer und was an dieser Akte hängt. * * Eigener Reiter, weil beides selten zugleich mit dem Sachstand gebraucht wird * und die Fallakte sonst das Bündelbudget reisst. Siehe das Layout daneben. */ export default async function CaseRelationsPage({ params, }: { params: Promise<{ caseNumber: string }> }) { const user = await requireUser() const { caseNumber } = await params const akte = await loadVisibleCase(user.permissions, caseNumber) if (!akte) notFound() const canEdit = canEditCase(user.permissions, akte).ok const darfPersonal = user.permissions.isAdmin || user.permissions.permissions.has('personnel.read') const [participants, links, members, files] = await Promise.all([ listParticipants(user.permissions, akte.id), listLinks(user.permissions, akte.id), canEdit ? db.user.findMany({ where: { isActive: true }, orderBy: { displayName: 'asc' }, take: 200, select: { id: true, displayName: true }, }) : Promise.resolve([]), // Nur Personalakten, die der Eintragende sehen darf, und nur mit dem Recht // dazu: sonst verriete die Auswahlliste ihre Existenz. canEdit && darfPersonal ? db.personnelFile.findMany({ where: visiblePersonnelWhere(user.permissions), orderBy: { displayName: 'asc' }, take: 200, select: { id: true, displayName: true }, }) : Promise.resolve([]), ]) return (

{de.participant.heading}

{de.link.heading}

) }