import { NextResponse } from 'next/server'
import { requireAdmin } from '@/lib/adminAuth'
import { prisma } from '@/lib/prisma'

export async function GET() {
  const auth = await requireAdmin()
  if ('error' in auth) return auth.error

  const [totalUsers, activeUsers, totalDocs, totalAudit, totalNews] = await Promise.all([
    prisma.user.count(),
    prisma.user.count({ where: { active: true } }),
    prisma.document.count(),
    prisma.auditLog.count(),
    prisma.news.count(),
  ])

  const recentLogins = await prisma.auditLog.findMany({
    where: { action: 'LOGIN' },
    orderBy: { createdAt: 'desc' },
    take: 5,
    include: { user: { select: { name: true, email: true } } },
  })

  return NextResponse.json({
    stats: { totalUsers, activeUsers, totalDocs, totalAudit, totalNews },
    recentLogins,
    env: {
      nodeVersion: process.version,
      nextAuthUrl: process.env.NEXTAUTH_URL ?? '—',
      dbUrl: process.env.DATABASE_URL?.replace(/\/\/.*@/, '//***@') ?? '—',
    },
  })
}
