import { supabase } from "@/integrations/supabase/client";

export const isEmail = (v: string) => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(v.trim());

export async function subscribeNewsletter(email: string, origem: string) {
  const clean = email.trim().toLowerCase();
  if (!isEmail(clean)) throw new Error("Informe um e-mail válido.");
  const { error } = await supabase.from("newsletter_subscribers").insert({ email: clean, origem });
  // Already subscribed counts as success.
  if (error && error.code !== "23505") throw new Error("Não foi possível concluir a inscrição. Tente novamente.");
}

export type ContactInput = {
  nome: string;
  email: string;
  telefone?: string | undefined;
  empresa?: string | undefined;
  cidade?: string | undefined;
  estado?: string | undefined;
  mensagem?: string | undefined;
};

export async function sendContact(input: ContactInput) {
  if (!input.nome.trim()) throw new Error("Informe seu nome.");
  if (!isEmail(input.email)) throw new Error("Informe um e-mail válido.");
  const t = (v?: string, n = 200) => (v ?? "").trim().slice(0, n) || null;
  const { error } = await supabase.from("contact_messages").insert({
    nome: input.nome.trim().slice(0, 200),
    email: input.email.trim().slice(0, 255),
    telefone: t(input.telefone, 40),
    empresa: t(input.empresa),
    cidade: t(input.cidade, 120),
    estado: t(input.estado, 40),
    mensagem: t(input.mensagem, 5000),
  });
  if (error) throw new Error("Não foi possível enviar sua mensagem. Tente novamente.");
}
