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

const CONFIG_KEY = 'menu_visibility'

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

  const config = await prisma.config.findUnique({ where: { key: CONFIG_KEY } })
  const value = config ? JSON.parse(config.value) : null

  return NextResponse.json({ config: value })
}

export async function PUT(req: NextRequest) {
  const auth = await requireAdmin()
  if ('error' in auth) return auth.error

  const body = await req.json()

  await prisma.config.upsert({
    where: { key: CONFIG_KEY },
    create: { key: CONFIG_KEY, value: JSON.stringify(body) },
    update: { value: JSON.stringify(body) },
  })

  await prisma.auditLog.create({
    data: {
      userId: auth.userId,
      action: 'UPDATE_MENU_CONFIG',
      entity: 'Config',
      details: 'Actualización de visibilidad de menús',
    },
  })

  return NextResponse.json({ ok: true })
}
