import { getTranslations } from "next-intl/server"; import Link from "next/link"; import { ContentCard, EmptyState } from "@/components/public/ui"; import { prisma } from "@/lib/prisma"; export const revalidate = 300; function formatDate(d: Date | null | undefined): string { return d ? d.toISOString().slice(0, 10) : ""; } export default async function RadioContestsPage() { const t = await getTranslations("pages.radioContests"); const contests = await prisma.radioContests .findMany({ where: { isActive: true }, orderBy: { startDate: "desc" }, take: 50, select: { id: true, title: true, prize: true, startDate: true, endDate: true }, }) .catch(() => []); return (
{contests.length === 0 ? ( {t("empty")} ) : (
{contests.map((c) => { const id = c.id.toString(); return (

🎉 {c.title || t("contestLabel", { id })}

{c.prize ? (

Prize: {c.prize}

) : null}

{c.startDate ? `${formatDate(c.startDate)} — ${c.endDate ? formatDate(c.endDate) : "ongoing"}` : t("dateUnknown")}

); })}
)}
); }