import { contarNotasDoPeriodo, montarPacoteDoContador, periodoDaExportacao } from "@/lib/fiscal/servidor/exportacao";
import { rotaFiscal } from "@/lib/fiscal/servidor/rota";

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

/**
 * O pacote de XMLs do período, em um arquivo só. `?contar=1` só diz quantas
 * notas entrariam, para a tela avisar antes de começar um download grande.
 */
export async function GET(req: Request) {
  return rotaFiscal("fiscal.ver", async ({ admin, empresaId, ambiente }) => {
    const busca = new URL(req.url).searchParams;
    const periodo = periodoDaExportacao(busca.get("de"), busca.get("ate"));
    if (busca.get("contar") === "1") {
      return { ...periodo, notas: await contarNotasDoPeriodo(admin, { empresaId, ambiente, ...periodo }) };
    }
    const pacote = await montarPacoteDoContador(admin, {
      empresaId,
      ambiente,
      ...periodo,
      incluirPdf: busca.get("pdf") === "1",
      incluirRecebidas: busca.get("recebidas") === "1",
    });
    return new Response(pacote.conteudo, {
      headers: {
        "Content-Type": "application/zip",
        "Content-Disposition": `attachment; filename="${pacote.nome}"`,
        "Cache-Control": "private, no-store",
        "X-Notas": String(pacote.notas),
        "X-Faltaram": String(pacote.faltaram),
      },
    });
  });
}
