import { asc } from "drizzle-orm"; import { redirect } from "next/navigation"; import { getTranslations } from "next-intl/server"; import { createCategory, createValue, deleteCategory, deleteValue, updateCategory, updateValue, } from "@/actions/admin-rare-values"; import { StatusCard } from "@/components/admin/dashboard"; import { Button } from "@/components/ui/button"; import { db, WebsiteRareValueCategories, WebsiteRareValues } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; const CURRENCY_TYPES = ["diamonds", "credits", "duckets", "points"]; export default async function AdminRareValues() { const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.SHOP_VIEW, session.user.rank)) { redirect("/admin"); } const t = await getTranslations("pages.admin.rareValues"); let categories: (typeof WebsiteRareValueCategories.$inferSelect)[] = []; try { categories = await db .select() .from(WebsiteRareValueCategories) .orderBy( asc(WebsiteRareValueCategories.priority), asc(WebsiteRareValueCategories.name), ); } catch { categories = []; } let values: (typeof WebsiteRareValues.$inferSelect)[] = []; try { values = await db .select() .from(WebsiteRareValues) .orderBy(asc(WebsiteRareValues.name)); } 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("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 })}
{t("editCategory")}
{rows.map((v) => { const vId = String(v.id); return ( ); })}
{t("colItemName")} {t("colItemId")} {t("colCredits")} {t("colCurrencyValue")} {t("colCurrency")} {t("colIcon")}
{v.name} {v.itemId ?? "—"} {v.creditValue ?? "—"} {v.currencyValue ?? "—"} {v.currencyType} {v.furnitureIcon}
{t("editValue")}
{rows.length === 0 ? (

{t("noValuesInCategory")}

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