import { redirect } from "next/navigation";
import { getCurrentUser } from "@/lib/api";
import { getDict, getLocale } from "@/lib/i18n";
import { Shell, type NavItem } from "@/components/Shell";
import { Icon, type IconName } from "@/components/Icon";

export const dynamic = "force-dynamic";

export default async function DashboardLayout({ children }: { children: React.ReactNode }) {
  const user = await getCurrentUser();
  if (!user) redirect("/login");
  const t = await getDict();
  const locale = await getLocale();

  const nav: NavItem[] = [{ href: "/dashboard", label: t.nav.dashboard, icon: "activity" as IconName }];
  if (user.permissions.includes("members.view")) {
    nav.push({ href: "/dashboard/members", label: t.nav.members, icon: "users" as IconName });
  }
  if (user.permissions.includes("structure.view")) {
    nav.push({ href: "/dashboard/structure", label: t.nav.structure, icon: "sitemap" as IconName });
  }
  if (user.permissions.includes("admin.manage_users")) {
    nav.push({ href: "/dashboard/users", label: t.nav.users, icon: "cog" as IconName });
  }
  if (user.permissions.includes("admin.audit.view")) {
    nav.push({ href: "/dashboard/audit", label: t.nav.audit, icon: "shield" as IconName });
  }
  if (user.permissions.includes("kpis.view")) {
    nav.push({ href: "/dashboard/kpis", label: t.nav.kpis, icon: "chart" as IconName });
  }
  if (user.permissions.includes("reports.view")) {
    nav.push({ href: "/dashboard/reports", label: t.reports.title, icon: "chart" as IconName });
  }
  if (user.hasMemberFile) {
    nav.push({ href: "/dashboard/my-profile", label: t.myProfile.title, icon: "clipboard" as IconName });
  }
  nav.push({ href: "/dashboard/social", label: locale === "en" ? "Social" : "الشبكة الاجتماعية", icon: "sparkles" as IconName });
  nav.push({ href: "/dashboard/profile", label: t.nav.profile, icon: "user" as IconName });

  return (
    <Shell
      user={{
        fullName: user.fullName,
        username: user.username,
        isDemo: user.isDemo,
        mustChangePassword: user.mustChangePassword,
        roles: user.roles.map((r) => r.nameAr),
      }}
      nav={nav}
    >
      {user.mustChangePassword && (
        <div className="mb-6 flex items-center gap-3 rounded-xl border border-amber-300 bg-amber-50 px-4 py-3 text-sm text-amber-900">
          <Icon name="key" className="h-5 w-5 shrink-0" />
          <p>
            حسابك يستخدم كلمة مرور مؤقتة —{" "}
            <a href="/dashboard/profile?must_change=1" className="font-bold underline underline-offset-2">
              يلزم تغييرها الآن
            </a>{" "}
            قبل الاستخدام.
          </p>
        </div>
      )}
      {children}
    </Shell>
  );
}
