import Link from "next/link"; import { createRadioRank, deleteRadioRank, updateRadioRank } from "@/actions/admin-radio-extra"; import { prisma } from "@/lib/prisma"; import { StatusCard } from "@/components/admin/dashboard"; import { Medal } from "lucide-react"; import { getTranslations } from "next-intl/server"; export const dynamic = "force-dynamic"; type Rank = { id: bigint; name: string; description: string | null; badgeCode: string | null; isActive: boolean; }; export default async function AdminRadioRanksPage() { const t = await getTranslations("pages.admin.radio"); let ranks: Rank[] = []; let dbError = false; try { ranks = await prisma.radioRanks.findMany({ select: { id: true, name: true, description: true, badgeCode: true, isActive: true, }, orderBy: { id: "asc" }, }); } catch { dbError = true; ranks = []; } const activeCount = ranks.filter((r) => r.isActive).length; return (

{t("ranksForm.title")}

{t("ranksForm.subtitle")}

{dbError ? (

{t("ranksForm.dbError")}

) : (
0 ? "ok" : "neutral"} icon="\u{2705}" />
)}

{t("ranksForm.addRank")}

{t("ranksForm.existing", { count: ranks.length })}

{ranks.length === 0 ? (
{t("ranksForm.noRanks")}
) : (
{ranks.map((r) => (
#{String(r.id)} {r.isActive ? t("ranksForm.activeLabel") : t("ranksForm.inactiveLabel")}
))}
)}
); }