import Link from "next/link";
import { Suspense } from "react";
import { getDb } from "@/lib/db";
import { getVoucherStatus } from "@/lib/voucher-status";
import { formatEuro } from "@/lib/vouchers";
const FILTERS = [
{ key: "", label: "Alle" },
{ key: "aktiv", label: "Aktiv" },
{ key: "bald", label: "Bald ablaufend" },
{ key: "abgelaufen", label: "Abgelaufen" },
{ key: "eingeloest", label: "Eingelöst" },
] as const;
function Skeleton() {
return (
{[0, 1, 2].map((i) => (
-
))}
);
}
async function VoucherList({ filter }: { filter: string }) {
const db = getDb();
const all = await db.voucher.findMany({ orderBy: { createdAt: "desc" } });
const now = Date.now();
const in14d = now + 14 * 24 * 3600 * 1000;
const filtered = all.filter((v) => {
const s = getVoucherStatus(v);
if (filter === "eingeloest") return s === "eingeloest";
if (filter === "abgelaufen") return s === "abgelaufen";
if (filter === "bald")
return s === "aktiv" && v.ablaufdatum && +new Date(v.ablaufdatum) >= now && +new Date(v.ablaufdatum) <= in14d;
if (filter === "aktiv") return s === "aktiv";
return true;
});
if (filtered.length === 0) {
return (
Keine Gutscheine gefunden.
Gutschein anlegen
);
}
return (
);
}
export default async function Home({ searchParams }: { searchParams: Promise<{ filter?: string }> }) {
const { filter = "" } = await searchParams;
return (
Gutscheine
Neu
}>
);
}