import type { Metadata } from 'next' import { db } from '@/lib/db' import { requirePermission } from '@/lib/auth/current' import { visiblePersonnelWhere } from '@/lib/access/personnelFilter' import { de } from '@/lib/i18n/de' import { NewCaseForm } from './NewCaseForm' export const metadata: Metadata = { title: de.case.createTitle } export const dynamic = 'force-dynamic' export default async function NewCasePage() { const user = await requirePermission('case.create') const [templates, levels, people, members] = await Promise.all([ db.documentTemplate.findMany({ // Nur Fallarten. Eine Vorlage für Dokumente legt keine Akte an. where: { isActive: true, uses: { has: 'CASE' } }, orderBy: [{ key: 'asc' }, { version: 'desc' }], distinct: ['key'], select: { key: true, name: true }, }), db.clearanceLevelConfig.findMany({ orderBy: { level: 'asc' } }), // Nur Personalakten, die der Anlegende sehen darf, und nur mit dem Recht // dazu: sonst verriete die Auswahlliste ihre Existenz. user.permissions.isAdmin || user.permissions.permissions.has('personnel.read') ? db.personnelFile.findMany({ where: visiblePersonnelWhere(user.permissions), orderBy: { displayName: 'asc' }, take: 200, select: { id: true, displayName: true }, }) : Promise.resolve([]), // Die Mitglieder der Abteilung. Ein Ermittler ist genauso ein Beteiligter // wie ein Betroffener, nur in anderer Rolle. db.user.findMany({ where: { isActive: true }, orderBy: { displayName: 'asc' }, take: 200, select: { id: true, displayName: true }, }), ]) return (

{de.case.createTitle}

level.level <= user.permissions.clearanceLevel)} people={people} members={members} defaultLevel={Math.min(1, user.permissions.clearanceLevel)} />
) }