"use client"; import { use, useEffect, useState } from "react"; import Link from "next/link"; import { formatEuro } from "@/lib/vouchers"; type Voucher = { id: number; name: string; anbieter: string; wertCents: number; restCents: number; ablaufdatum: string | null; codeText: string | null; kategorie: string | null; notiz: string | null; status: string; }; export default function VoucherDetailPage({ params }: { params: Promise<{ id: string }> }) { const { id } = use(params); const [v, setV] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(""); useEffect(() => { fetch(`/api/vouchers/${id}`) .then((r) => (r.ok ? r.json() : Promise.reject(new Error("not found")))) .then((d) => setV(d)) .catch(() => setError("Gutschein nicht gefunden")) .finally(() => setLoading(false)); }, [id]); async function redeem() { const res = await fetch(`/api/vouchers/${id}`, { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify({ action: "redeem" }), }); if (res.ok) setV(await res.json()); } if (loading) return
; if (error || !v) return (

{error}

Zurück zur Liste
); return (
← Zurück

{v.name}

Anbieter
{v.anbieter}
Wert
{formatEuro(v.wertCents)}
Rest
{formatEuro(v.restCents)}
Status
{v.status}
{v.ablaufdatum &&
Ablaufdatum
{new Date(v.ablaufdatum).toLocaleDateString("de-DE")}
} {v.codeText &&
Code
{v.codeText}
} {v.kategorie &&
Kategorie
{v.kategorie}
} {v.notiz &&
Notiz
{v.notiz}
}
{v.status !== "eingeloest" && ( )}
); }