import { getTranslations } from "next-intl/server"; import { createCategory, createValue, deleteCategory, deleteValue, } from "@/actions/admin-rare-values"; import { StatusCard } from "@/components/admin/dashboard"; import { prisma } from "@/lib/prisma"; import { Gem } from "lucide-react"; export const dynamic = "force-dynamic"; const CURRENCY_TYPES = ["diamonds", "credits", "duckets", "points"]; export default async function AdminRareValues() { const t = await getTranslations("pages.admin.rareValues"); let categories: Awaited> = []; try { categories = await prisma.websiteRareValueCategories.findMany({ orderBy: [{ priority: "asc" }, { name: "asc" }], }); } catch { categories = []; } let values: Awaited> = []; try { values = await prisma.websiteRareValues.findMany({ orderBy: { name: "asc" }, }); } catch { values = []; } const valuesByCategory = new Map(); for (const v of values) { const key = String(v.categoryId); const list = valuesByCategory.get(key); if (list) list.push(v); else valuesByCategory.set(key, [v]); } return (

{t("title")}

{t("subtitle")}

{t("addCategory")}

{categories.length === 0 ? (
{t("noCategories")}
) : null}
{categories.map((cat) => { const catId = String(cat.id); const rows = valuesByCategory.get(catId) ?? []; return (
{cat.name} {t("badgeLabel", { badge: cat.badge })} {t("priorityLabel", { priority: cat.priority })} {t("itemCount", { count: rows.length })}
{rows.map((v) => ( ))}
{t("colItemName")} {t("colItemId")} {t("colCredits")} {t("colCurrencyValue")} {t("colCurrency")} {t("colIcon")}
{v.name} {v.itemId ?? "—"} {v.creditValue ?? "—"} {v.currencyValue ?? "—"} {v.currencyType} {v.furnitureIcon}
{rows.length === 0 ? (

{t("noValuesInCategory")}

) : null}
); })}
); }