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

/**
 * Funcionário que paga a assinatura paga a da EMPRESA.
 *
 * O aviso de pagamento chega com o e-mail de quem pagou. Se esse e-mail é de
 * um funcionário, gravar o acesso nele criava um segundo plano — um na
 * empresa, outro na pessoa — e o painel passava a ler o errado. Aqui o e-mail
 * do pagador vira o e-mail de cobrança da empresa em que ele trabalha.
 *
 * Devolve null quando o e-mail não é de funcionário (dono, cliente novo) ou
 * quando a empresa não tem e-mail de cobrança diferente do dele.
 */
export async function emailDeCobrancaDoFuncionario(admin: SupabaseClient, email: string): Promise<string | null> {
  const proprio = String(email || "").trim().toLowerCase();
  if (!proprio) return null;

  const { data: vinculo } = await admin
    .from("company_users")
    .select("company_id,role,active")
    .ilike("email", proprio)
    .neq("role", "owner")
    .limit(1)
    .maybeSingle();
  if (!vinculo?.company_id || vinculo.active === false) return null;

  const { data: empresa } = await admin.from("companies").select("billing_email").eq("id", vinculo.company_id).maybeSingle();
  const cobranca = String(empresa?.billing_email ?? "").trim().toLowerCase();
  if (!cobranca || cobranca === proprio || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(cobranca)) return null;
  return cobranca;
}
