import { useState } from 'react'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Textarea } from '@/components/ui/textarea'; import { Label } from '@/components/ui/label'; import { Phone, Mail, MapPin, MessageCircle, Clock, Send } from 'lucide-react'; import { useToast } from '@/hooks/use-toast'; import { z } from 'zod'; // ===================================================================== // DEFINIÇÃO DAS VARIÁVEIS DE AMBIENTE: ESSENCIAIS PARA WHATSAPP E CRM // ===================================================================== const WHATSAPP_BASE_URL = import.meta.env.VITE_PUBLIC_WHATSAPP_LINK || "https://wa.me/5511949474214"; const CRM_API_URL = "https://api.paineldocorretor.net/api/crm/negocios"; // Usando a API Key fornecida por você const CRM_API_KEY = 'ydM0nihESN9IuIEHEoNGG3iQzE10UwgpkD8H3M0LZGU0'; // --- ATENÇÃO: SUBSTITUA PELO GUID REAL DA ETAPA "Novos Leads" DO SEU CRM --- // Exemplo: '7e2f14e4-842d-45f9-a79e-38d0d7fa50ac' const GUID_ETAPA_NOVOS_LEADS = ''; // <--- DEIXADO EM BRANCO CONFORME INSTRUÍDO PELO SUPORTE // --- ID DO PRODUTO PARA O LEAD (HARDCODED OU VIA ENV, SE MUDAR) --- const PRODUTO_ID_CRM = 'fbb0a6e2-50c4-4078-95ff-f72805474367'; // --- FIM DA ATENÇÃO --- // Zod Schema atualizado para incluir a 'cidade' const contactSchema = z.object({ name: z.string().trim().min(2, { message: "Nome deve ter pelo menos 2 caracteres" }).max(100), email: z.string().trim().email({ message: "Email inválido" }).max(255), phone: z.string().trim().min(10, { message: "Telefone inválido" }).max(20), city: z.string().trim().min(2, { message: "Cidade deve ter pelo menos 2 caracteres" }).max(100), // Adicionado campo de cidade message: z.string().trim().min(10, { message: "Mensagem deve ter pelo menos 10 caracteres" }).max(1000), }); const Contato = () => { const { toast } = useToast(); const [formData, setFormData] = useState({ name: '', email: '', phone: '', city: '', // Adicionado campo de cidade message: '', }); const [loading, setLoading] = useState(false); const [formSubmittedSuccessfully, setFormSubmittedSuccessfully] = useState(false); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); setFormSubmittedSuccessfully(false); try { // Validação dos dados do formulário const validated = contactSchema.parse(formData); let crmSent = false; // Verifica se a chave da API do CRM está configurada if (!CRM_API_KEY) { console.error('⚠️ CRM_API_KEY não configurada. Não foi possível enviar para o CRM.'); toast({ variant: "destructive", title: "Erro de Configuração", description: "A chave da API do CRM não está definida. Contate o administrador." }); setLoading(false); return; } // AJUSTE REALIZADO AQUI: // Agora, apenas um console.error ou console.warn será emitido, // sem exibir um toast de erro para o usuário final, // pois o suporte confirmou que deixar o GUID em branco é aceitável. if (GUID_ETAPA_NOVOS_LEADS === 'SEU_GUID_DA_ETAPA_NOVOS_LEADS_AQUI') { console.error('⚠️ GUID da etapa "Novos Leads" ainda está com o valor de placeholder. O lead será criado na etapa inicial padrão do CRM, mas esta mensagem de erro deve ser resolvida.'); // Remover o toast de erro aqui para o usuário final } else if (!GUID_ETAPA_NOVOS_LEADS) { console.warn('⚠️ GUID da etapa "Novos Leads" está em branco. O lead será criado na etapa inicial padrão do CRM, conforme instruído pelo suporte.'); } // Preparação do payload para o CRM const leadTitle = `Lead - ${validated.name} (#${new Date().getTime().toString().slice(-6)})`; // Gera um ID único simples const crmPayload = { Nome: leadTitle, produtoId: PRODUTO_ID_CRM, // Adicionado produtoId // Se GUID_ETAPA_NOVOS_LEADS for '', ele será undefined aqui, // o que faz com que o CRM use sua etapa padrão. Etapa: GUID_ETAPA_NOVOS_LEADS || undefined, Cidade: validated.city, // Adicionada cidade Etiquetas: ["SITE"], // Mantenho suas etiquetas atuais, mas pode ser ajustado Observacao: `Mensagem do site:\n${validated.message}`, Contato: { Nome: validated.name, Email: validated.email, Telefones: [validated.phone] } }; try { console.log('📦 Enviando dados para o CRM:', crmPayload); const crmResponse = await fetch(CRM_API_URL, { method: 'POST', headers: { 'Content-Type': 'application/json', 'ApiKey': CRM_API_KEY, }, body: JSON.stringify(crmPayload), }); if (crmResponse.ok) { crmSent = true; console.log('✅ Dados enviados para o CRM com sucesso!'); } else { // Tentar obter mais detalhes do erro se o CRM retornar um JSON const errorDetail = await crmResponse.json().catch(() => crmResponse.text()); // Tenta JSON, se falhar, pega texto console.error(`⚠️ Erro ao enviar dados para o CRM: ${crmResponse.status} - ${JSON.stringify(errorDetail)}`); toast({ variant: "destructive", title: "Falha no CRM", description: `Não foi possível registrar no CRM. Status: ${crmResponse.status}. Detalhes: ${typeof errorDetail === 'string' ? errorDetail : JSON.stringify(errorDetail)}` }); } } catch (crmError) { console.error('⚠️ Falha na conexão com o CRM:', crmError); toast({ variant: "destructive", title: "Erro de Rede", description: "Não foi possível conectar ao servidor do CRM. Verifique sua conexão ou tente novamente." }); } if (crmSent) { setFormSubmittedSuccessfully(true); setFormData({ name: '', email: '', phone: '', city: '', message: '' }); // Limpa o campo city também } else { toast({ variant: "destructive", title: "Erro no Envio", description: "Não foi possível processar sua solicitação no CRM. Por favor, tente novamente mais tarde." }); } } catch (error) { if (error instanceof z.ZodError) { toast({ variant: "destructive", title: "Erro no formulário", description: error.errors[0].message, }); } else { toast({ variant: "destructive", title: "Erro inesperado", description: "Ocorreu um erro ao processar sua solicitação." }); console.error("Erro inesperado durante submissão:", error); } } finally { setLoading(false); } }; const handleChange = (e: React.ChangeEvent) => { setFormData(prev => ({ ...prev, [e.target.name]: e.target.value })); }; const contactInfo = [ { icon: Phone, title: 'Telefone', details: ['(11) 2286-4848', '(11) 94947-4214'], gradient: 'from-primary to-primary-soft' }, { icon: MessageCircle, title: 'WhatsApp', details: ['(11) 94947-4214'], link: WHATSAPP_BASE_URL, gradient: 'from-green-500 to-green-600' }, { icon: Clock, title: 'Horário', details: ['Seg - Sex: 8h às 18h', 'Sáb: 9h às 13h'], gradient: 'from-secondary to-primary' }, { icon: MapPin, title: 'Endereços', details: [ 'Rua Barros Cassal, 37 – Itaquera', 'Av. Pres. Juscelino Kubitschek, 1830 – Itaim Bibi' ], gradient: 'from-primary to-secondary' }, ]; return (
{/* Hero Section */}

Fale com a Rocha Sales

Estamos prontos para cuidar de você e da sua empresa. Entre em contato e receba sua consultoria gratuita.

{/* Contact Info Grid */}
{contactInfo.map((info, index) => (

{info.title}

{info.details.map((detail, idx) => (

{detail}

))} {info.link && ( )}
))}
{/* Contact Form OR Success Message */}
{formSubmittedSuccessfully ? ( // Mensagem de Sucesso (já implementado)

Obrigado por entrar em contato conosco!

Em breve nossos profissionais entrarão em contato.

) : ( // Formulário de Contato Original

Envie sua mensagem

{/* NOVO CAMPO: Cidade */}