import { prisma } from "@/lib/prisma"
import { getSession } from "@/lib/session"

export type UserRole = "admin" | "employee"

export interface CurrentUser {
  id: string
  name: string | null
  email: string
  image: string | null
  role: UserRole
}

export async function getCurrentUser(): Promise<CurrentUser | null> {
  try {
    const session = await getSession()
    if (!session) return null

    const user = await prisma.user.findUnique({
      where: { id: session.userId },
      select: {
        id: true,
        name: true,
        email: true,
        image: true,
        role: true,
      },
    })

    if (!user) return null

    return {
      id: user.id,
      name: user.name,
      email: user.email,
      image: user.image,
      role: user.role,
    }
  } catch (err) {
    console.error("[getCurrentUser]", err)
    return null
  }
}

export function isAllowedRole(userRole: UserRole, allowedRoles: UserRole[]): boolean {
  return allowedRoles.includes(userRole)
}
