import { NextRequest, NextResponse } from 'next/server'
import { getServerSession } from 'next-auth'
import { authOptions } from '@/lib/auth'
import { prisma } from '@/lib/prisma'

export async function PATCH(
  req: NextRequest,
  { params }: { params: Promise<{ id: string }> }
) {
  const session = await getServerSession(authOptions)
  if (!session?.user?.id) {
    return NextResponse.json({ error: 'Não autorizado' }, { status: 401 })
  }

  const { id } = await params

  // Verifica se a publicação pertence a um processo do usuário
  const publicacao = await prisma.publicacao.findFirst({
    where: { id },
    include: {
      processo: {
        select: { userId: true },
      },
    },
  })

  if (!publicacao) {
    return NextResponse.json({ error: 'Publicação não encontrada' }, { status: 404 })
  }

  if (publicacao.processo.userId !== session.user.id) {
    return NextResponse.json({ error: 'Não autorizado' }, { status: 403 })
  }

  const updated = await prisma.publicacao.update({
    where: { id },
    data: { visualizado: true },
  })

  return NextResponse.json({ publicacao: updated })
}
