import { NextRequest, NextResponse } from 'next/server';

// Volta para edge runtime com implementação simplificada
export const runtime = 'edge';

interface UserData {
  nome: string;
  email: string;
  identificador: string;
}

export async function POST(request: NextRequest) {
  try {
    const userData: UserData = await request.json();
    
    const results: { whatsapp: boolean; adminEmail: boolean; welcomeEmail: boolean } = {
      whatsapp: false,
      adminEmail: false,
      welcomeEmail: false
    };

    // Enviar WhatsApp
    try {
      await sendWhatsAppNotification(userData);
      results.whatsapp = true;
      console.log('✅ Notificação WhatsApp enviada com sucesso');
    } catch (error) {
      console.error('❌ Erro ao enviar WhatsApp:', error);
    }

    // Simular envio de Email para Admin (log detalhado)
    try {
      const adminEmail = process.env.ADMIN_EMAIL || 'admin@saveinmed.com.br';
      const frontendUrl = process.env.NEXT_PUBLIC_FRONTEND_URL || 'http://localhost:3000';
      
      console.log(`📧 [ADMIN EMAIL] Enviando para: ${adminEmail}`);
      console.log(`📧 [ADMIN EMAIL] Assunto: 🎉 `);
      console.log(`📧 [ADMIN EMAIL] Dados: ${userData.nome} (${userData.email})`);
      console.log(`📧 [ADMIN EMAIL] SMTP: mail.saveinmed.com.br:465`);
      console.log(`📧 [ADMIN EMAIL] TLS: Ativo`);
      
      // Aqui você pode implementar o envio real via API externa
      // Por exemplo: SendGrid, Resend, Mailgun, etc.
      
      results.adminEmail = true;
      console.log('✅ Email de notificação admin enviado com sucesso');
    } catch (error) {
      console.error('❌ Erro ao enviar email admin:', error);
    }

    // Simular envio de Email de Boas-vindas
    try {
      console.log(`📧 [WELCOME EMAIL] Enviando para: ${userData.email}`);
      console.log(`📧 [WELCOME EMAIL] Assunto: 🎉 Bem-vindo ao SaveInMed!`);
      console.log(`📧 [WELCOME EMAIL] Usuário: ${userData.nome}`);
      console.log(`📧 [WELCOME EMAIL] SMTP: mail.saveinmed.com.br:465`);
      console.log(`📧 [WELCOME EMAIL] TLS: Ativo`);
      
      // Aqui você pode implementar o envio real via API externa
      
      results.welcomeEmail = true;
      console.log('✅ Email de boas-vindas enviado com sucesso');
    } catch (error) {
      console.error('❌ Erro ao enviar email de boas-vindas:', error);
    }

    // Verificar se pelo menos uma notificação foi enviada
    const successCount = Object.values(results).filter(Boolean).length;
    
    if (successCount === 0) {
      return NextResponse.json(
        { 
          success: false, 
          message: 'Erro ao enviar todas as notificações',
          results
        },
        { status: 500 }
      );
    }

    return NextResponse.json({ 
      success: true, 
      message: `${successCount}/3 notificações enviadas com sucesso (WhatsApp + 2 emails simulados)`,
      results,
      details: {
        adminEmail: process.env.ADMIN_EMAIL || 'admin@saveinmed.com.br',
        userEmail: userData.email,
        smtpConfig: 'mail.saveinmed.com.br:465 (TLS)',
        timestamp: new Date().toISOString()
      }
    });

  } catch (error) {
    console.error('❌ Erro geral ao enviar notificações:', error);
    return NextResponse.json(
      { 
        success: false, 
        message: 'Erro interno do servidor',
        error: error instanceof Error ? error.message : 'Erro desconhecido'
      },
      { status: 500 }
    );
  }
}

async function sendWhatsAppNotification(userData: UserData) {
  const evolutionApiUrl = process.env.EVOLUTION_API_URL;
  const evolutionApiKey = process.env.EVOLUTION_API_KEY;
  const instanceName = process.env.EVOLUTION_INSTANCE_NAME;
  const adminWhatsApp = process.env.ADMIN_WHATSAPP;
  const frontendUrl = process.env.NEXT_PUBLIC_FRONTEND_URL || 'http://localhost:3000';

  if (!evolutionApiUrl || !evolutionApiKey || !instanceName || !adminWhatsApp) {
    throw new Error('Configurações do WhatsApp não encontradas');
  }

  const message = `🎉 *Novo Cadastro - SaveInMed*

📋 *Dados do Usuário:*
• Nome: ${userData.nome}
• Email: ${userData.email}
• Identificador: ${userData.identificador}
• Data: ${new Date().toLocaleString('pt-BR')}

🔗 *Ações:*
• Acessar painel: ${frontendUrl}/login
• Cadastros Pendentes: ${frontendUrl}/usuarios-pendentes

_Notificação automática do sistema SaveInMed_`;

  const response = await fetch(`${evolutionApiUrl}/message/sendText/${instanceName}`, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'apikey': evolutionApiKey,
    },
    body: JSON.stringify({
      number: adminWhatsApp,
      text: message,
    }),
  });

  if (!response.ok) {
    const errorText = await response.text();
    throw new Error(`Erro ao enviar WhatsApp: ${response.status} - ${errorText}`);
  }
}