import { auth } from "@/lib/auth"
import { redirect } from "next/navigation"
import Sidebar from "@/components/layout/sidebar"
import Header from "@/components/layout/header"
import { db } from "@/lib/db"

export const dynamic = "force-dynamic"

export default async function DashboardLayout({
  children,
}: {
  children: React.ReactNode
}) {
  const session = await auth()
  if (!session) redirect("/login")

  const roles = Array.isArray(session.user.roles) ? session.user.roles : []

  const permissions = await db.permission.findMany({
    where: {
      role: {
        name: { in: roles },
      },
    },
    select: {
      module: true,
      actions: true,
    },
  })

  return (
    <div className="min-h-screen bg-muted/30">
      <Sidebar permissions={permissions} user={{ ...session.user, role: roles[0] ?? "" }} />

      {/* Must match sidebar w-[260px] exactly */}
      <div className="lg:pl-[260px]">
        <Header user={{ ...session.user, role: roles[0] ?? "" }} />

        <main className="min-h-[calc(100vh-56px)]">
          {children}
        </main>

        <footer className="border-t bg-background px-6 py-4 text-xs text-muted-foreground">
          &copy; 2026 HRMS. All rights reserved.
        </footer>
      </div>
    </div>
  )
}