import { AdminSidebarWrapper } from "@/components/admin-sidebar-wrapper"
import { auth } from "@/auth"
import {
  SidebarInset,
  SidebarProvider,
} from "@/components/ui/sidebar"
import { TooltipProvider } from "@/components/ui/tooltip"
import { prisma } from "@/lib/prisma"
import { redirect } from "next/navigation"
import LicenseLockout from "@/components/layout/license-lockout"

export default async function DashboardLayout({
  children,
}: {
  children: React.ReactNode;
}) {
  const session = await auth()
  
  let realUser: any = session?.user;
  if (session?.user?.id) {
    const dbUser = await prisma.staff.findUnique({ where: { id: session.user.id } });
    if (dbUser) realUser = { ...session.user, avatarUrl: dbUser.avatarUrl, name: dbUser.fullName || dbUser.username };
  }

  const settings = await prisma.setting.findFirst();
  if (!settings) {
    redirect("/setup");
  }

  return (
    <TooltipProvider>
      <SidebarProvider defaultOpen={true}>
        <LicenseLockout validUntil={settings?.licenseValidUntil || null} />
        <AdminSidebarWrapper user={realUser} onlineServerUrl={settings?.onlineServerUrl || null} settings={settings} />
        <SidebarInset className="bg-muted/10 h-full flex flex-col overflow-y-auto">
          {children}
        </SidebarInset>
      </SidebarProvider>
    </TooltipProvider>
  )
}
