import { useState, useEffect } from 'react'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@/components/ui/card'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Loader2, Plus, AlertCircle } from 'lucide-react'; import { Alert, AlertDescription } from '@/components/ui/alert'; import { findOrCreateWhatsAppGroup } from '@/services/whatsAppGroupsService'; import { getUserWhatsAppInstance } from '@/services/whatsAppInstanceService'; import { createWhatsAppGroup, updateGroupRemoteJid } from '@/services/whatsAppGroupCreationService'; import { useToast } from '@/hooks/use-toast'; interface CreateGroupFormProps { userEmail: string; onSuccess: () => void; } const CreateGroupForm = ({ userEmail, onSuccess }: CreateGroupFormProps) => { const { toast } = useToast(); const [cadastrando, setCadastrando] = useState(false); const [nomeGrupo, setNomeGrupo] = useState(''); const [hasWhatsAppInstance, setHasWhatsAppInstance] = useState(false); const [checkingInstance, setCheckingInstance] = useState(true); const [userInstance, setUserInstance] = useState<{ instancia_zap: string | null; status_instancia: string | null; whatsapp: string | null; } | null>(null); // Verificar se o usuário tem instância WhatsApp CONECTADA useEffect(() => { const checkUserInstance = async () => { if (!userEmail) { console.log('Email do usuário não fornecido'); setCheckingInstance(false); return; } setCheckingInstance(true); try { console.log('=== VERIFICAÇÃO DE INSTÂNCIA ==='); console.log('Verificando instância para o usuário:', userEmail); const instanceData = await getUserWhatsAppInstance(userEmail); console.log('=== DADOS DA INSTÂNCIA RETORNADOS ==='); console.log('Dados completos:', JSON.stringify(instanceData, null, 2)); if (instanceData) { console.log('=== VERIFICAÇÃO DETALHADA ==='); console.log('instancia_zap existe?', !!instanceData.instancia_zap); console.log('instancia_zap valor:', instanceData.instancia_zap); console.log('instancia_zap não é vazio?', instanceData.instancia_zap?.trim() !== ''); console.log('status_instancia valor:', instanceData.status_instancia); console.log('status_instancia é "conectado"?', instanceData.status_instancia === 'conectado'); } // LÓGICA CORRETA: Verificar se tem instância E se está conectada const hasValidInstance = !!( instanceData && instanceData.instancia_zap && instanceData.instancia_zap.trim() !== '' && instanceData.status_instancia === 'conectado' // DEVE ESTAR CONECTADO ); console.log('=== RESULTADO DA VALIDAÇÃO ==='); console.log('hasValidInstance:', hasValidInstance); if (hasValidInstance) { setHasWhatsAppInstance(true); setUserInstance(instanceData); console.log('✅ Usuário tem instância WhatsApp conectada - liberando cadastro de grupo'); } else { setHasWhatsAppInstance(false); setUserInstance(instanceData); console.log('❌ Usuário não tem instância conectada:', { instancia_zap: instanceData?.instancia_zap, status_instancia: instanceData?.status_instancia }); } } catch (error) { console.error('Erro ao verificar instância do usuário:', error); setHasWhatsAppInstance(false); setUserInstance(null); } finally { setCheckingInstance(false); } }; checkUserInstance(); }, [userEmail]); // Cadastrar novo grupo const handleCadastrarGrupo = async () => { if (!userEmail) { toast({ title: 'Erro', description: 'Você precisa estar logado para cadastrar um grupo', variant: 'destructive', }); return; } if (!nomeGrupo.trim()) { toast({ title: 'Atenção', description: 'Digite um nome para o grupo', variant: 'destructive', }); return; } if (!userInstance || !userInstance.instancia_zap || userInstance.status_instancia !== 'conectado') { toast({ title: 'Erro', description: 'Instância WhatsApp não está conectada', variant: 'destructive', }); return; } setCadastrando(true); try { console.log("Iniciando processo de cadastro de grupo..."); // 1. Cadastrar grupo no banco de dados local const grupo = await findOrCreateWhatsAppGroup(nomeGrupo.trim()); if (!grupo) { throw new Error('Não foi possível cadastrar o grupo no banco de dados'); } // 2. Criar grupo no WhatsApp via API try { const groupResponse = await createWhatsAppGroup( userInstance.instancia_zap, userEmail, userInstance.whatsapp || '' ); console.log('Resposta da criação do grupo:', groupResponse); // 3. Atualizar remote_jid no banco de dados if (groupResponse.id) { await updateGroupRemoteJid(grupo.id, groupResponse.id); toast({ title: 'Sucesso!', description: `Grupo "${groupResponse.subject}" criado com sucesso no seu WhatsApp!`, variant: 'default', }); } else { toast({ title: 'Atenção', description: 'Grupo cadastrado no sistema, mas não foi possível criar no WhatsApp', variant: 'destructive', }); } } catch (apiError) { console.error('Erro ao criar grupo via API:', apiError); toast({ title: 'Atenção', description: 'Grupo cadastrado no sistema, mas houve erro ao criar no WhatsApp. Verifique sua conexão.', variant: 'destructive', }); } // Resetar o campo de nome setNomeGrupo(''); // Atualizar a lista de grupos onSuccess(); } catch (error) { console.error('Erro ao cadastrar grupo:', error); let errorMsg = 'Erro desconhecido'; if (error instanceof Error) { errorMsg = error.message; } toast({ title: 'Erro', description: `Não foi possível registrar o grupo: ${errorMsg}`, variant: 'destructive', }); } finally { setCadastrando(false); } }; if (checkingInstance) { return ( Verificando instância WhatsApp... ); } if (!hasWhatsAppInstance) { return ( Cadastrar novo grupo Para criar um grupo é necessário ter uma instância do WhatsApp conectada Para criar um grupo é necessário ter sua instância do WhatsApp conectada. Acesse o menu "Conectar WhatsApp" e realize a conexão primeiro. {/* Informações de debug DETALHADAS */}

📊 STATUS DETALHADO DA INSTÂNCIA:

Email consultado: {userEmail || 'Não definido'}

instancia_zap: {instanceData?.instancia_zap || 'NULL/Vazio'}

status_instancia: {instanceData?.status_instancia || 'NULL/Vazio'}

whatsapp: {instanceData?.whatsapp || 'NULL/Vazio'}

🔍 VALIDAÇÕES:

✓ Instância existe? {instanceData ? '✅ SIM' : '❌ NÃO'}

✓ instancia_zap preenchida? {(instanceData?.instancia_zap && instanceData.instancia_zap.trim() !== '') ? '✅ SIM' : '❌ NÃO'}

✓ Status é "conectado"? {instanceData?.status_instancia === 'conectado' ? '✅ SIM' : '❌ NÃO'}

{instanceData?.instancia_zap && instanceData?.status_instancia !== 'conectado' && (

⚠️ Instância encontrada, mas não está conectada. Status atual: "{instanceData.status_instancia}"

)}
); } return ( Cadastrar novo grupo Preencha as informações abaixo para cadastrar um novo grupo do WhatsApp {/* Mostrar informações da instância conectada */}

✓ Instância conectada: {userInstance?.instancia_zap}

Status: {userInstance?.status_instancia}

setNomeGrupo(e.target.value)} />

Digite um nome descritivo para o grupo que você irá criar

Informações importantes:

  • O grupo será criado automaticamente no seu WhatsApp
  • Você será adicionado como participante do grupo
  • O grupo terá o nome: FinDash - {userEmail.split('@')[0]}
); }; export default CreateGroupForm;