import { getTranslations } from "next-intl/server"; import { saveMaintenance } from "@/actions/admin-maintenance"; import { StatusCard } from "@/components/admin/dashboard"; import { prisma } from "@/lib/prisma"; import { redirect } from "next/navigation"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; export const dynamic = "force-dynamic"; const KEYS = [ "maintenance_enabled", "maintenance_message", "min_maintenance_login_rank", ] as const; export default async function AdminMaintenance() { const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.SETTINGS_VIEW, session.user.rank)) { redirect("/admin"); } 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("currentState")}

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

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

{t("settings")}