Files

40 lines
1.1 KiB
TypeScript

import { getServerSession } from "next-auth";
import { authOptions } from "@/lib/auth";
import { prisma } from "@/lib/prisma";
import { redirect } from "next/navigation";
import AdminOverview from "./overview";
export default async function AdminIndex() {
const session = await getServerSession(authOptions);
if (!session?.user) redirect("/login");
if (session.user.role !== "ADMIN") redirect("/member");
const [
totalMembers,
muayThaiMembers,
yogaMembers,
pendingCertificates,
totalMedia,
unreadMessagesCount,
] = await Promise.all([
prisma.user.count({ where: { role: "MEMBER" } }),
prisma.user.count({ where: { isMuayThai: true } }),
prisma.user.count({ where: { isYoga: true } }),
prisma.certificate.count({ where: { status: "PENDING" } }),
prisma.media.count(),
prisma.message.count(),
]);
return (
<AdminOverview
stats={{
totalMembers,
muayThaiMembers,
yogaMembers,
pendingCertificates,
totalMedia,
messages: unreadMessagesCount,
}}
/>
);
}