Files
2025-11-11 03:08:36 -03:00

60 lines
1.7 KiB
TypeScript

import type { Metadata } from "next";
import { cookies } from "next/headers";
import { redirect } from "next/navigation";
import { AdminItemCreatePage } from "@/components/admin/items/AdminItemCreatePage";
import Header from "@/components/Header";
import { searchAdminItems } from "@/lib/prisma/queries/items";
import { getActiveServers } from "@/lib/prisma/queries/servers";
import { getUserById } from "@/lib/prisma/queries/users";
import { getSession } from "@/lib/redis/session";
export async function generateMetadata(): Promise<Metadata> {
return {
title: "Novo item | Painel Administrativo",
description: "Cadastre um novo item unificado no catálogo administrativo.",
};
}
export default async function AdminNewItemPage({
params,
}: {
params: Promise<{ locale: string }>;
}) {
const { locale } = await params;
const cookieStore = await cookies();
const sessionId = cookieStore.get("sessionId")?.value;
if (!sessionId) {
redirect(`/${locale}`);
}
const session = await getSession(sessionId);
if (!session) {
redirect(`/${locale}`);
}
const adminUser = await getUserById(session.userId);
if (!adminUser || adminUser.user_id !== 1) {
redirect(`/${locale}`);
}
const [initialItems, activeServers] = await Promise.all([
searchAdminItems({ page: 1, pageSize: 1 }),
getActiveServers(),
]);
return (
<div className="min-h-screen bg-background">
<Header />
<main className="container mx-auto px-4 py-10">
<AdminItemCreatePage
locale={locale}
categories={initialItems.categories ?? []}
serverOptions={(activeServers ?? []).map((s) => s.server_name)}
/>
</main>
</div>
);
}