import type { Metadata } from "next"
import { redirect } from "next/navigation"

import { NotificationPreferencesForm } from "@/components/settings/notification-preferences-form"
import { requireAuthenticatedSession } from "@/lib/auth-server"

export const metadata: Metadata = {
  title: "Preferências de notificação",
  description: "Configure quais notificações por e-mail deseja receber.",
}

export default async function PortalNotificationSettingsPage() {
  const session = await requireAuthenticatedSession()
  const role = (session.user.role ?? "").toLowerCase()
  const persona = (session.user.machinePersona ?? "").toLowerCase()

  // Colaboradores e máquinas com persona de colaborador podem acessar
  const allowedRoles = new Set(["collaborator", "manager", "admin", "agent"])
  const isMachinePersonaAllowed = role === "machine" && (persona === "collaborator" || persona === "manager")
  const allowed = allowedRoles.has(role) || isMachinePersonaAllowed

  if (!allowed) {
    redirect("/portal")
  }

  // Staff deve usar a página de configurações completa
  const staffRoles = new Set(["admin", "manager", "agent"])
  if (staffRoles.has(role)) {
    redirect("/settings/notifications")
  }

  return (
    <div className="space-y-6">
      <div>
        <h1 className="text-2xl font-semibold tracking-tight">Preferências de notificação</h1>
        <p className="text-muted-foreground">
          Configure quais notificações por e-mail deseja receber sobre seus chamados.
        </p>
      </div>
      <NotificationPreferencesForm isPortal />
    </div>
  )
}
