'use client' import { useActionState, useState } from 'react' import type { BescheidPruefStatus } from '@prisma/client' import { Scale } from 'lucide-react' import { Feld } from '@/components/feld' import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert' import { Badge } from '@/components/ui/badge' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' import { Input } from '@/components/ui/input' import { Select } from '@/components/ui/select' import { Rechtshinweis } from '@/components/rechtshinweis' import { Absenden, Meldung } from '@/components/sozialhilfe/bausteine' import { BescheidAbzeichen } from '@/components/sozialhilfe/abzeichen' import { PRUEFSTATUS, PRUEFSTATUS_BESCHRIFTUNG, PRUEFSTATUS_ERKLAERUNG, } from '@/lib/sozialhilfe/bescheide' import { bescheidStatusSetzen, type Formularzustand } from '@/server/actions/sozialhilfe' /** * Die Prüfansicht eines Bescheids: Rechenweg der Widerspruchsfrist, * Ampel und Statuswechsel. * * Der Rechenweg steht ausgeschrieben da, weil die Anwendung sich irren * kann. Wer eine Frist verpasst, soll sehen, wo die Rechnung abgebogen * ist - und nicht einer Zahl vertrauen müssen, die aus dem Nichts kommt. */ export type Rechenweg = { berechenbar: boolean widerspruchMoeglichBis: string | null rechnerischesEnde: string | null verschoben: boolean tageVerbleibend: number | null abgelaufen: boolean ampel: { variante: 'rot' | 'orange' | 'gelb' | 'gruen' | 'secondary'; text: string } schritte: { titel: string; text: string; rechtsgrundlage: string }[] hinweise: string[] } function alsAnzeige(iso: string | null): string { return iso ? iso.split('-').reverse().join('.') : '–' } export function BescheidPruefung({ bescheidId, pruefStatus, widerspruchEingelegtAm, rechenweg, darfSchreiben, }: { bescheidId: string pruefStatus: BescheidPruefStatus widerspruchEingelegtAm: string rechenweg: Rechenweg darfSchreiben: boolean }) { const [zustand, aktion] = useActionState(bescheidStatusSetzen, {}) const [status, setStatus] = useState(pruefStatus) return (
Widerspruchsfrist Berechnet aus dem Zugangsdatum. Die Anwendung rechnet — entscheiden tun der Träger und im Streitfall das Sozialgericht.
{rechenweg.ampel.text}
{rechenweg.berechenbar ? ( <>

Widerspruch möglich bis

{alsAnzeige(rechenweg.widerspruchMoeglichBis)}

{rechenweg.verschoben && (

Rechnerisch wäre es der {alsAnzeige(rechenweg.rechnerischesEnde)} gewesen — verschoben auf den nächsten Werktag.

)}
    {rechenweg.schritte.map((schritt, i) => (
  1. {schritt.titel}

    {schritt.text}

    {schritt.rechtsgrundlage}

  2. ))}
) : ( )} {rechenweg.hinweise.map((hinweis, i) => ( ))}
Prüfstand {PRUEFSTATUS_ERKLAERUNG[pruefStatus]}
{darfSchreiben ? (
{status === 'WIDERSPRUCH_EINGELEGT' && ( )} Stand übernehmen ) : (

Zum Ändern des Prüfstands fehlt dir die Schreibberechtigung.

)}
) }