import { arquivoDaRecebida } from "@/lib/fiscal/servidor/recebidas";
import { exigirUuid, rotaFiscal } from "@/lib/fiscal/servidor/rota";

export const runtime = "nodejs";
export const dynamic = "force-dynamic";

type Contexto = { params: Promise<{ id: string }> };

/** XML ou DANFE da nota recebida. O XML completo só existe depois da resposta. */
export async function GET(req: Request, { params }: Contexto) {
  const { id } = await params;
  return rotaFiscal(["fiscal.recebidas", "fiscal.ver"], async ({ admin, empresaId, ambiente }) => {
    const tipo = new URL(req.url).searchParams.get("tipo") === "pdf" ? "pdf" : "xml";
    const arquivo = await arquivoDaRecebida(admin, {
      empresaId,
      ambiente,
      notaId: exigirUuid(id, "Nota recebida"),
      tipo,
    });
    return new Response(arquivo.conteudo, {
      headers: {
        "Content-Type": arquivo.tipoMime,
        "Content-Disposition": `${tipo === "xml" ? "attachment" : "inline"}; filename="${arquivo.nome.replace(/"/g, "")}"`,
        "Cache-Control": "private, no-store",
      },
    });
  });
}
