import { AppShell } from "@/components/app-shell";
import { getSession } from "@/lib/auth/session";
import { db } from "@/lib/db";
import { toEnrolledSite } from "@/lib/site-agent/enrollment";
import { redirect } from "next/navigation";

export default async function DashboardLayout({ children }: Readonly<{ children: React.ReactNode }>) {
  const session = await getSession();
  if (!session) redirect("/login");
  const membership = await db.organizationMember.findFirst({
    where: { userId: session.userId },
    include: { organization: { include: { subscription: { include: { plan: true } }, sites: { orderBy: { createdAt: "desc" } } } } },
    orderBy: { createdAt: "asc" },
  });
  if (!membership) redirect("/login");
  const subscription = membership.organization.subscription;
  return <AppShell accountEmail={session.email} organizationName={membership.organization.name} initialSites={membership.organization.sites.map(toEnrolledSite)} workspaceId={membership.organization.id} planName={subscription?.plan.name ?? "No plan"} planStatus={subscription?.status === "ACTIVE" ? "Active" : subscription?.status === "TRIALING" ? "Trial" : subscription?.status?.replaceAll("_", " ") ?? "Inactive"} siteLimit={subscription?.plan.siteLimit ?? 0}>{children}</AppShell>;
}
