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

export async function GET(
  request: Request,
  { params }: { params: Promise<{ slug: string }> }
) {
  try {
    const { auth } = await import('@/lib/auth')
    const { isAdmin } = await import('@/lib/admin')

    const session = await auth()
    if (!session?.user?.email || !isAdmin(session.user.email)) {
      return NextResponse.json(
        { success: false, error: 'Admin access required' },
        { status: 403 }
      )
    }

    const { slug } = await params

    // Get microsite with user information and links
    const microsite = await prisma.microsite.findFirst({
      where: {
        slug: slug
      },
      include: {
        user: {
          select: {
            id: true,
            name: true,
            email: true,
            image: true
          }
        },
        links: {
          select: {
            id: true,
            label: true,
            url: true,
            clicks: true,
            order: true
          },
          orderBy: {
            order: 'asc'
          }
        },
        _count: {
          select: {
            links: true
          }
        }
      }
    })

    if (!microsite) {
      return NextResponse.json(
        { success: false, error: 'Microsite not found' },
        { status: 404 }
      )
    }

    return NextResponse.json({
      success: true,
      data: microsite
    })

  } catch (error) {
    console.error('Error fetching microsite details:', error)
    return NextResponse.json(
      { success: false, error: 'Failed to fetch microsite details' },
      { status: 500 }
    )
  }
}