import { auth } from "@/lib/auth"
import { redirect } from "next/navigation"
import { db } from "@/lib/db"
import { getNotificationsForUser } from "@/features/notifications/service"
import { hasPermission } from "@/lib/permissions"
import NotificationsClient from "@/features/notifications/components/NotificationClient"

export default async function NotificationsPage() {
  const session = await auth()
  if (!session?.user?.id) redirect("/login")

  // 1. Get the user's role IDs first
  const userRoles = await db.userRole.findMany({
    where: { userId: session.user.id },
    select: { roleId: true },
  })
  const roleIds = userRoles.map((r) => r.roleId)

  // 2. Now use roleIds for permission check
  const [notifications, canCreate] = await Promise.all([
    getNotificationsForUser(session.user.id),
    hasPermission(roleIds, "notifications", "create"),
  ])

  const users = canCreate
    ? await db.user.findMany({ select: { id: true, name: true, email: true } })
    : []

  return (
    <NotificationsClient
      notifications={notifications}
      canCreate={canCreate}
      users={users}
    />
  )
}