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")}
))}
)}
); }