import type { Metadata } from 'next' import { redirect } from 'next/navigation' import { Scale } from 'lucide-react' import { Alert, AlertDescription } from '@/components/ui/alert' import { SeitenKopf } from '@/components/seiten-kopf' import { SerienabfrageFormular, type SerienZeile, } from '@/components/vertraege/serienabfrage-formular' import { aktiveBetreute, erfordereBenutzer, erfordereZugang } from '@/lib/auth/sitzung' import { db, nichtGeloescht } from '@/lib/db' import { kandidatenBewerten } from '@/lib/vertraege/serienabfrage' import { VERTRAG_ART_BESCHRIFTUNG } from '@/lib/vertraege/konstanten' import { heuteAlsTag } from '@/lib/fristen/datum' export const metadata: Metadata = { title: 'Rückkaufswerte anfragen' } export const dynamic = 'force-dynamic' /** * Die Serienabfrage: alle Rückkaufswerte in einem Zug. * * Liegt unter /vertraege/serienabfrage/seite, weil /vertraege/serienabfrage * die POST-Route ist, die das ZIP liefert. Die Trennung ist Absicht: Die * Route hat Nebenwirkungen und gehört nicht hinter einen GET. */ export default async function SerienabfrageSeite() { const benutzer = await erfordereBenutzer('/vertraege/serienabfrage/seite') const aktive = await aktiveBetreute(benutzer) if (!aktive) redirect('/ersteinrichtung') const { darfSchreiben } = await erfordereZugang(aktive.id, 'VERTRAEGE', 'lesen') if (!darfSchreiben('VERTRAEGE')) redirect('/vertraege') const vertraege = await db.vertrag.findMany({ where: { betreuteId: aktive.id, ...nichtGeloescht }, select: { id: true, bezeichnung: true, gesellschaft: true, art: true, status: true, rueckkaufswertAngefragtAm: true, }, }) const bewertet = kandidatenBewerten(vertraege) // Vertraege ohne jede Aussicht auf einen Rueckkaufswert (Strom, Telefon, // Rundfunk) wuerden die Liste nur verlaengern - sie bleiben draussen. // Alles andere steht drin, notfalls mit Hindernis. const zeilen: SerienZeile[] = bewertet .filter( (k) => k.moeglich || k.hindernis !== 'Diese Vertragsart bildet keinen Rückkaufswert.', ) .map((k) => ({ vertragId: k.vertrag.id, bezeichnung: k.vertrag.bezeichnung, gesellschaft: k.vertrag.gesellschaft, artBeschriftung: VERTRAG_ART_BESCHRIFTUNG[k.vertrag.art], moeglich: k.moeglich, hindernis: k.hindernis, vorausgewaehlt: k.vorausgewaehlt, })) return (
) }