import { NextResponse } from "next/server";

import { canCompany } from "@/lib/company-context";
import { acordarFilaDeFotos } from "@/lib/assistentes/importacao/fila-de-fotos";
import { listarImportacoes } from "@/lib/assistentes/importacao/servidor";
import { acessoDoPainel, recusaDoPainel } from "@/lib/assistentes/painel";

export const runtime = "nodejs";

/**
 * As importações de produtos feitas pelos assistentes, para a aba de
 * Integrações: os lotes, os produtos de cada um como estão agora, e o
 * andamento das fotos. Abrir a lista também põe a fila das fotos para andar
 * (depois de um deploy, ela espera alguém olhar).
 */
export async function GET() {
  const acesso = await acessoDoPainel();
  if (!acesso.ok) return recusaDoPainel(acesso.motivo);
  if (!canCompany(acesso.empresa, acesso.user.id, "products.catalog.read")) {
    return NextResponse.json({ importacoes: [], podePublicar: false, podeApagar: false }, { headers: { "Cache-Control": "no-store" } });
  }

  try {
    const importacoes = await listarImportacoes(acesso.admin, { companyId: acesso.empresa.companyId, tenantIds: acesso.empresa.tenantIds });
    if (importacoes.some((importacao) => importacao.fotos.naFila > 0)) acordarFilaDeFotos();
    return NextResponse.json(
      {
        importacoes,
        podePublicar: canCompany(acesso.empresa, acesso.user.id, "catalog.products.write"),
        podeApagar: canCompany(acesso.empresa, acesso.user.id, "products.catalog.write"),
      },
      { headers: { "Cache-Control": "no-store" } }
    );
  } catch (erro) {
    console.error("[assistentes] não foi possível listar as importações:", erro instanceof Error ? erro.message : erro);
    return NextResponse.json({ error: "Não foi possível carregar as importações." }, { status: 500 });
  }
}
