import { notaParaTela } from "@/lib/fiscal/servidor/apresentacao";
import { acordarFila } from "@/lib/fiscal/servidor/fila";
import { cancelarNotaFiscal } from "@/lib/fiscal/servidor/notas";
import { exigirUuid, lerCorpo, rotaFiscal } from "@/lib/fiscal/servidor/rota";

export const runtime = "nodejs";

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

export async function POST(req: Request, { params }: Contexto) {
  const { id } = await params;
  return rotaFiscal("fiscal.cancelar", async ({ admin, empresaId, user }) => {
    const corpo = await lerCorpo(req);
    const nota = await cancelarNotaFiscal(admin, {
      empresaId,
      notaId: exigirUuid(id, "Nota"),
      motivo: typeof corpo.motivo === "string" ? corpo.motivo : "",
      usuarioId: user.id,
    });
    acordarFila();
    return { nota: notaParaTela(nota) };
  });
}
