import type { SupabaseClient } from "@supabase/supabase-js";

/*
  A compra fecha a rota da visita.

  Sem isto a linha do tempo termina em "abriu o checkout" e a loja fica sem
  saber se aquela visita virou dinheiro. Com isto, a rota inteira — de onde veio,
  o que olhou, o que perguntou — fica amarrada a venda, que e o que ensina qual
  caminho fecha negocio.

  A ponte entre o visitante anonimo e o cliente e feita no checkout: quem paga
  esta logado, e ali se guarda de quem era aquele navegador.
*/
export async function registrarCompraNaRota(
  admin: SupabaseClient,
  params: { tenantId?: string | null; paymentId?: string | null; valor: number }
) {
  if (!params.tenantId || !params.paymentId) return;

  try {
    const { data } = await admin
      .from("catalog_order_payments")
      .select("metadata")
      .eq("id", params.paymentId)
      .maybeSingle();

    const clienteId = String(
      (data as { metadata?: { client_id?: string } } | null)?.metadata?.client_id || ""
    ).trim();
    if (!clienteId) return;

    const { data: visita } = await admin
      .from("store_visitor_pings")
      .select("visitor_key")
      .eq("user_id", params.tenantId)
      .eq("client_id", clienteId)
      .maybeSingle();

    const chave = String((visita as { visitor_key?: string } | null)?.visitor_key || "").trim();
    if (!chave) return;

    await admin.from("store_visitor_events").insert({
      user_id: params.tenantId,
      visitor_key: chave,
      kind: "compra",
      amount: Number(params.valor || 0),
      detail: "Pagamento aprovado",
    });
  } catch {
    /* O dinheiro ja entrou: a rota e memoria, nao pode atrapalhar o pagamento. */
  }
}
