import { NextResponse } from "next/server";

import { canCompany, type CompanyPermission } from "@/lib/company-context";
import { acessoDoPainel, recusaDoPainel } from "@/lib/assistentes/painel";
import { listarPersonalizacoes } from "@/lib/assistentes/personalizacoes/servidor";

export const runtime = "nodejs";

/**
 * As personalizações que os assistentes fizeram na conta, para a aba de
 * Integrações. Dono e admin veem as de todo mundo; os demais, as dos próprios
 * assistentes.
 */
export async function GET() {
  const acesso = await acessoDoPainel();
  if (!acesso.ok) return recusaDoPainel(acesso.motivo);

  try {
    const personalizacoes = await listarPersonalizacoes(acesso.admin, {
      companyId: acesso.empresa.companyId,
      usuarioId: acesso.user.id,
      verTodas: acesso.verTodas,
      pode: (permissao: CompanyPermission) => canCompany(acesso.empresa, acesso.user.id, permissao),
    });
    return NextResponse.json({ personalizacoes }, { headers: { "Cache-Control": "no-store" } });
  } catch (erro) {
    console.error("[assistentes] não foi possível listar as personalizações:", erro instanceof Error ? erro.message : erro);
    return NextResponse.json({ error: "Não foi possível carregar as personalizações." }, { status: 500 });
  }
}
