import { NextResponse } from "next/server";
import { createAdminClient } from "@/lib/supabase-admin";
import { carregarPagamento, meiosDoLocal } from "@/lib/provedor-de-pagamento";

/**
 * A loja aceita pagamento online?
 *
 * Devolve um booleano e o nome do provedor, e nada mais. Existe para a vitrine
 * decidir o que oferecer no carrinho: com pagamento configurado, o caminho é o
 * checkout; sem ele, o pedido só se fecha pela conversa, e aí o botão do
 * WhatsApp deixa de ser um atalho e passa a ser a única saída.
 *
 * O nome do provedor entrou quando o Asaas chegou: o checkout desenha painéis
 * diferentes para cada um, e sem saber qual é, ele desenharia o errado.
 *
 * Nenhuma credencial sai daqui — nem chave pública, nem ambiente.
 */
export async function GET(request: Request) {
  const { searchParams } = new URL(request.url);
  const slug = String(searchParams.get("slug") || "").trim().toLowerCase();
  if (!slug) return NextResponse.json({ ativo: false, provedor: null, meios: [] });

  try {
    const admin = createAdminClient();
    const { data: perfil } = await admin
      .from("profiles")
      .select("id")
      .eq("slug", slug)
      .maybeSingle();

    const donoId = (perfil as { id?: string } | null)?.id;
    if (!donoId) return NextResponse.json({ ativo: false, provedor: null, meios: [] });

    const meios = meiosDoLocal(await carregarPagamento(admin as never, donoId), "loja");

    return NextResponse.json(
      {
        ativo: meios.length > 0,
        /* Um provedor por MEIO, e nao mais um por loja: a mesma vitrine pode
           receber o Pix numa conta e o cartao noutra. O primeiro continua saindo
           em `provedor` para quem so quer saber "cobra online?". */
        provedor: meios[0]?.provedor ?? null,
        meios: meios.map((m) => ({ meio: m.meio, provedor: m.provedor })),
      },
      /* Um minuto de cache: a resposta muda quando o lojista mexe na
         integração, e não a cada carrinho aberto. */
      { headers: { "cache-control": "public, max-age=60" } }
    );
  } catch {
    /* Falha na consulta não pode esconder a saída do cliente: sem resposta,
       a loja se comporta como quem não tem pagamento e oferece o WhatsApp. */
    return NextResponse.json({ ativo: false, provedor: null, meios: [] });
  }
}
