import { getTranslations } from "next-intl/server"; import { Wrench } from "lucide-react"; import { saveMaintenance } from "@/actions/admin-maintenance"; import { StatusCard } from "@/components/admin/dashboard"; import { prisma } from "@/lib/prisma"; export const dynamic = "force-dynamic"; const KEYS = [ "maintenance_enabled", "maintenance_message", "min_maintenance_login_rank", ] as const; export default async function AdminMaintenance() { const t = await getTranslations("pages.admin.maintenance"); let rows: { key: string; value: string }[] = []; try { rows = await prisma.websiteSetting.findMany({ where: { key: { in: [...KEYS] } }, select: { key: true, value: true }, }); } catch { rows = []; } const byKey = new Map(rows.map((r) => [r.key, r.value])); const enabledRaw = byKey.get("maintenance_enabled") ?? "0"; const enabled = enabledRaw === "1" || enabledRaw.toLowerCase() === "true"; const message = byKey.get("maintenance_message") ?? ""; const minRankRaw = byKey.get("min_maintenance_login_rank") ?? "5"; const minRank = Number.parseInt(minRankRaw, 10); const minRankValue = Number.isFinite(minRank) ? minRank : 5; return (

{t("title")}

{t.rich("subtitle", { code: (chunks) => {chunks} })}

{t("currentState")}

{enabled ? t("enabled") : t("disabled")}
{t("maintenanceCurrently", { status: enabled ? t("enabled") : t("disabled") })}

{enabled ? t("onlyRankCanLogin", { rank: minRankValue }) : t("hotelOpenToEveryone")}

{t("settings")}