import { notFound } from 'next/navigation' import { SeitenKopf } from '@/components/seiten-kopf' import { Inventar } from '@/components/immobilie/inventar' import { aktiveBetreute, erfordereBenutzer, erfordereZugang } from '@/lib/auth/sitzung' import { centZuZahl, db, nichtGeloescht } from '@/lib/db' import { oeffnen } from '@/lib/crypto/feld' import { inventarNotizLesen, inventarSumme } from '@/lib/immobilie/inventar' export const dynamic = 'force-dynamic' export default async function InventarSeite({ params }: { params: Promise<{ id: string }> }) { const { id } = await params const benutzer = await erfordereBenutzer(`/immobilie/${id}/inventar`) const aktive = await aktiveBetreute(benutzer) if (!aktive) return null const { darfSchreiben } = await erfordereZugang(aktive.id, 'IMMOBILIE', 'lesen') const schreiben = darfSchreiben('IMMOBILIE') const immobilie = await db.immobilie.findFirst({ where: { id, betreuteId: aktive.id, ...nichtGeloescht }, select: { id: true, bezeichnung: true }, }) if (!immobilie) notFound() const posten = await db.vermoegensposten.findMany({ where: { betreuteId: aktive.id, immobilieId: id, art: 'WERTGEGENSTAND', ...nichtGeloescht, }, include: { wertstaende: { orderBy: { stichtag: 'desc' }, take: 1 }, verknuepfungen: { include: { dokument: { select: { id: true, titel: true, art: true, schreibenVom: true } }, }, }, }, orderBy: { bezeichnung: 'asc' }, }) const stuecke = posten.map((p) => { const offen = oeffnen('Vermoegensposten', p) const notiz = inventarNotizLesen(offen.notizen) return { id: p.id, bezeichnung: p.bezeichnung, raum: notiz.raum, verbleib: notiz.verbleib, bemerkung: notiz.bemerkung, wertCent: centZuZahl(p.wertstaende[0]?.wertCent ?? null), fotos: p.verknuepfungen .filter((v) => v.dokument.art === 'FOTO') .map((v) => ({ id: v.dokument.id, titel: v.dokument.titel, aufgenommenAm: v.dokument.schreibenVom?.toISOString() ?? null, })), } }) const summeCent = centZuZahl( inventarSumme(posten.map((p) => ({ wertCent: p.wertstaende[0]?.wertCent ?? null }))), ) return (
) }