import { auth } from "@/lib/auth";
import { redirect } from "@/i18n/navigation";
import { getTranslations, setRequestLocale } from "next-intl/server";
import { getBusinessContext, canAccessBusinessPanel } from "@/lib/session-utils";
import MenuBoardPanelSurface from "@/components/business/menu-boards/MenuBoardPanelSurface";

export default async function BusinessPanelLayout({
  children,
  params,
}: {
  children: React.ReactNode;
  params: Promise<{ locale: string }>;
}) {
  const { locale } = await params;
  setRequestLocale(locale);

  const session = await auth();
  if (!session) {
    redirect({ href: "/login", locale });
    return null;
  }

  if (!canAccessBusinessPanel(session)) {
    redirect({ href: "/dashboard", locale });
    return null;
  }

  const businessContext = getBusinessContext(session)!;
  const t = await getTranslations("businessPanel");

  return (
    <div className="w-full space-y-5 sm:space-y-6">
      <div>
        <h1 className="text-xl font-semibold tracking-tight sm:text-2xl">{businessContext.name}</h1>
        <p className="mt-1 text-sm text-[var(--text-muted)]">
          {businessContext.staff
            ? t("viewingAsStaff", {
                name: businessContext.staff.name,
                role: businessContext.staff.roleName ?? t("noRole"),
              })
            : t("viewingAsOwner")}
        </p>
      </div>

      <MenuBoardPanelSurface>{children}</MenuBoardPanelSurface>
    </div>
  );
}
