<?php
// enviar_email_plano.php

// Habilitar exibição de erros para debug
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Definir cabeçalho JSON
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST');

// Verificar se é uma requisição POST
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405);
    echo json_encode(['success' => false, 'message' => 'Método não permitido']);
    exit;
}

// Obter dados do formulário
$dados = $_POST;

// Validar dados obrigatórios
$required = ['nome', 'email', 'telefone', 'plano_escolhido', 'plano_periodo', 'valor_plano'];
foreach ($required as $field) {
    if (empty($dados[$field])) {
        http_response_code(400);
        echo json_encode(['success' => false, 'message' => "Campo obrigatório faltando: $field", 'dados_recebidos' => $dados]);
        exit;
    }
}

// Limpar e validar dados
$nome = htmlspecialchars(trim($dados['nome']));
$empresa = htmlspecialchars(trim($dados['empresa'] ?? 'Não informado'));
$email = filter_var(trim($dados['email']), FILTER_SANITIZE_EMAIL);
$telefone = htmlspecialchars(trim($dados['telefone']));
$plano_periodo = htmlspecialchars(trim($dados['plano_periodo']));
$periodo_plano = htmlspecialchars(trim($dados['periodo_plano'] ?? $plano_periodo));
$quantidade_usuarios = htmlspecialchars(trim($dados['quantidade_usuarios'] ?? 'Não informado'));
$mensagem = htmlspecialchars(trim($dados['mensagem'] ?? 'Nenhuma mensagem adicional'));
$plano = htmlspecialchars(trim($dados['plano_escolhido']));
$valor = htmlspecialchars(trim($dados['valor_plano']));
$data_interesse = date('d/m/Y H:i:s');
$ip_usuario = $_SERVER['REMOTE_ADDR'] ?? 'Não disponível';

// Validar e-mail
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo json_encode(['success' => false, 'message' => 'E-mail inválido']);
    exit;
}

// Validar valor do plano (não pode ser 0)
if ($valor === '0' || empty($valor)) {
    echo json_encode(['success' => false, 'message' => 'Valor do plano inválido', 'valor_recebido' => $valor]);
    exit;
}

// Criar diretório de logs se não existir
if (!file_exists('logs')) {
    mkdir('logs', 0755, true);
}

// Mapear nomes dos períodos
$periodo_nome = [
    'anual' => 'Pacote Anual',
    'mensal' => 'Pacote Mensal'
];

$periodo_formatado = $periodo_nome[$periodo_plano] ?? $plano_periodo;

// Detalhes dos planos
$limites_por_plano = [
    'Básico' => '100MB por arquivo, 5GB total, até 10 usuários',
    'Pró' => '1GB por arquivo, 100GB total, até 50 usuários',
    'Empresas' => '10GB por arquivo, armazenamento ilimitado, usuários ilimitados'
];

$limite_plano = $limites_por_plano[$plano] ?? 'Limites padrão';

// ========== FUNÇÕES DE ENVIO DE E-MAIL (mesmo sistema do enviar_email.php) ==========

/**
 * Função para enviar email usando PHPMailer + SMTP (SaaS)
 */
function enviarEmailPHPMailer($destinatario, $assunto, $mensagem, $nomeRemetente, $emailRemetenteReplyTo = null) {
    try {
        // Verificar se o arquivo de configuração SMTP existe
        if (!file_exists('config_smtp.php')) {
            // Tentar criar um arquivo de configuração padrão
            $config_content = "<?php\n";
            $config_content .= "// Configurações SMTP para envio de e-mails\n";
            $config_content .= "define('SMTP_HOST', 'smtp.gmail.com');\n";
            $config_content .= "define('SMTP_USER', 'seu-email@gmail.com');\n";
            $config_content .= "define('SMTP_PASS', 'sua-senha');\n";
            $config_content .= "define('SMTP_PORT', 587);\n";
            file_put_contents('config_smtp.php', $config_content);
            
            return [
                'success' => false,
                'message' => 'Arquivo de configuração SMTP não encontrado. Um modelo foi criado (config_smtp.php).'
            ];
        }
        
        // Incluir arquivo de configurações SMTP externo
        require_once 'config_smtp.php';
        
        // Verificar se o PHPMailer está disponível
        $phpmailer_paths = [
            'PHPMailer/PHPMailer.php',
            'PHPMailer/src/PHPMailer.php',
            '../PHPMailer/PHPMailer.php',
            'vendor/phpmailer/phpmailer/src/PHPMailer.php',
            __DIR__ . '/PHPMailer/PHPMailer.php',
            __DIR__ . '/PHPMailer/src/PHPMailer.php'
        ];
        
        $phpmailer_file = null;
        $smtp_file = null;
        $exception_file = null;
        
        foreach ($phpmailer_paths as $path) {
            if (file_exists($path)) {
                $phpmailer_file = $path;
                $smtp_file = str_replace('PHPMailer.php', 'SMTP.php', $path);
                $exception_file = str_replace('PHPMailer.php', 'Exception.php', $path);
                break;
            }
        }
        
        if (!$phpmailer_file || !file_exists($phpmailer_file)) {
            return [
                'success' => false,
                'message' => 'PHPMailer não encontrado. Por favor, instale via composer: composer require phpmailer/phpmailer'
            ];
        }
        
        // Incluir PHPMailer
        require_once $phpmailer_file;
        require_once $smtp_file;
        if (file_exists($exception_file)) {
            require_once $exception_file;
        }
        
        // Usar namespaces se disponível
        if (class_exists('PHPMailer\PHPMailer\PHPMailer')) {
            $mail = new PHPMailer\PHPMailer\PHPMailer(true);
            $mail->isSMTP();
            $mail->Host       = SMTP_HOST;
            $mail->SMTPAuth   = true;
            $mail->Username   = SMTP_USER;
            $mail->Password   = SMTP_PASS;
            $mail->SMTPSecure = PHPMailer\PHPMailer\PHPMailer::ENCRYPTION_STARTTLS;
            $mail->Port       = SMTP_PORT;
        } else {
            // Fallback para versão sem namespace
            $mail = new PHPMailer(true);
            $mail->isSMTP();
            $mail->Host       = SMTP_HOST;
            $mail->SMTPAuth   = true;
            $mail->Username   = SMTP_USER;
            $mail->Password   = SMTP_PASS;
            $mail->SMTPSecure = 'tls';
            $mail->Port       = SMTP_PORT;
        }
        
        $mail->CharSet    = 'UTF-8';
        $mail->SMTPDebug  = 0;
        
        // Remetente (usando e-mail do usuário se disponível)
        $emailRemetente = (!empty($emailRemetenteReplyTo) && filter_var($emailRemetenteReplyTo, FILTER_VALIDATE_EMAIL)) 
            ? $emailRemetenteReplyTo 
            : SMTP_USER;
            
        $mail->setFrom($emailRemetente, $nomeRemetente);
        
        // Reply-To personalizado (e-mail do usuário)
        if ($emailRemetenteReplyTo && filter_var($emailRemetenteReplyTo, FILTER_VALIDATE_EMAIL)) {
            $mail->addReplyTo($emailRemetenteReplyTo, $nomeRemetente);
        }
        
        // Destinatário
        $mail->addAddress($destinatario);
        
        // Conteúdo
        $mail->isHTML(true);
        $mail->Subject = $assunto;
        $mail->Body    = $mensagem;
        $mail->AltBody = strip_tags($mensagem);
        
        // Enviar
        if ($mail->send()) {
            return ['success' => true, 'message' => 'E-mail enviado com sucesso'];
        } else {
            return ['success' => false, 'message' => 'Erro ao enviar: ' . $mail->ErrorInfo];
        }
        
    } catch (Exception $e) {
        return ['success' => false, 'message' => 'Exception: ' . $e->getMessage()];
    }
}

/**
 * Função para enviar email usando mail() nativo (fallback)
 */
function enviarEmailNativo($destinatario, $assunto, $mensagem, $nomeRemetente, $emailRemetenteReplyTo = null) {
    // Usar e-mail do usuário como remetente se disponível
    $remetenteEmail = (!empty($emailRemetenteReplyTo) && filter_var($emailRemetenteReplyTo, FILTER_VALIDATE_EMAIL))
        ? $emailRemetenteReplyTo
        : 'notificacao@son.tvitecnologia.com.br';
        
    $headers = "From: $nomeRemetente <$remetenteEmail>\r\n";
    
    if ($emailRemetenteReplyTo && filter_var($emailRemetenteReplyTo, FILTER_VALIDATE_EMAIL)) {
        $headers .= "Reply-To: $emailRemetenteReplyTo\r\n";
    }
    
    $headers .= "Content-Type: text/html; charset=UTF-8\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    
    if (mail($destinatario, $assunto, $mensagem, $headers)) {
        return ['success' => true, 'message' => 'E-mail enviado com sucesso (mail())'];
    }
    
    return ['success' => false, 'message' => 'Falha no envio via mail()'];
}

/**
 * Função principal para enviar email (tenta PHPMailer, depois fallback para mail())
 */
function enviarEmail($destinatario, $assunto, $mensagem, $nomeRemetente, $emailRemetenteReplyTo = null) {
    // Primeiro tenta com PHPMailer
    $resultado = enviarEmailPHPMailer($destinatario, $assunto, $mensagem, $nomeRemetente, $emailRemetenteReplyTo);
    
    // Se PHPMailer falhar, tenta com mail() nativo
    if (!$resultado['success']) {
        error_log("PHPMailer falhou, tentando mail() nativo: " . $resultado['message']);
        $resultado = enviarEmailNativo($destinatario, $assunto, $mensagem, $nomeRemetente, $emailRemetenteReplyTo);
    }
    
    return $resultado;
}

// Construir o e-mail HTML para o comercial
$assunto_comercial = "🎯 NOVO LEAD - Interesse no Plano {$plano} - {$empresa}";

$corpo_email_comercial = "
<!DOCTYPE html>
<html>
<head>
    <meta charset='UTF-8'>
    <style>
        body { font-family: Arial, sans-serif; line-height: 1.6; color: #333; background: #f5f5f5; padding: 20px; }
        .container { max-width: 600px; margin: 0 auto; background: white; border-radius: 8px; overflow: hidden; box-shadow: 0 2px 10px rgba(0,0,0,0.1); }
        .header { background: #4CAFAF; color: white; padding: 20px; text-align: center; }
        .content { padding: 25px; }
        .info-box { background: #f8f9fa; border-left: 4px solid #4CAFAF; padding: 15px; margin: 15px 0; border-radius: 4px; }
        .plano-box { background: #e7f3ff; border: 2px solid #4CAFAF; padding: 20px; border-radius: 6px; margin: 20px 0; }
        .label { font-weight: bold; color: #4CAFAF; min-width: 150px; display: inline-block; }
        .valor { font-weight: bold; color: #28a745; font-size: 1.3em; }
        .footer { background: #343a40; color: white; padding: 15px; text-align: center; font-size: 0.9em; }
        .urgente { background: #fff3cd; border: 2px solid #ffc107; padding: 12px; border-radius: 6px; margin: 20px 0; }
    </style>
</head>
<body>
    <div class='container'>
        <div class='header'>
            <h1 style='margin: 0; font-size: 1.5rem;'>🎯 NOVO LEAD - Escolha de Plano</h1>
            <p style='margin: 10px 0 0 0; opacity: 0.9; font-size: 0.9rem;'>Sistema SaaS - TVI Tecnologia</p>
        </div>
        
        <div class='content'>
            <div class='plano-box'>
                <h2 style='margin-top: 0; color: #4CAFAF;'>📋 Plano Escolhido: <strong>{$plano}</strong></h2>
                <p style='font-size: 1.1em;'><span class='label'>Período:</span> {$periodo_formatado}</p>
                <p style='font-size: 1.1em;'><span class='label'>Valor:</span> <span class='valor'>R$ {$valor}/mês</span></p>
                <p><strong>📊 Limites do Plano:</strong> {$limite_plano}</p>
            </div>
            
            <div class='info-box'>
                <h3 style='margin-top: 0; color: #4CAFAF;'>👤 Informações do Cliente</h3>
                <p><span class='label'>Nome:</span> {$nome}</p>
                <p><span class='label'>Empresa:</span> {$empresa}</p>
                <p><span class='label'>E-mail:</span> <a href='mailto:{$email}' style='color: #4CAFAF;'>{$email}</a></p>
                <p><span class='label'>Telefone:</span> <a href='tel:{$telefone}' style='color: #4CAFAF;'>{$telefone}</a></p>
                <p><span class='label'>Usuários Estimados:</span> {$quantidade_usuarios}</p>
            </div>
            
            <div class='info-box'>
                <h3 style='margin-top: 0; color: #4CAFAF;'>💬 Mensagem do Cliente</h3>
                <p>{$mensagem}</p>
            </div>
            
            <div class='info-box'>
                <h3 style='margin-top: 0; color: #4CAFAF;'>📊 Informações Técnicas</h3>
                <p><span class='label'>Data do Interesse:</span> {$data_interesse}</p>
                <p><span class='label'>IP do Cliente:</span> {$ip_usuario}</p>
            </div>
            
            <div class='urgente'>
                <h4 style='margin: 0 0 8px 0; color: #856404;'>🚨 AÇÃO URGENTE REQUERIDA</h4>
                <p style='margin: 0;'>Entre em contato com o cliente nas próximas <strong>24 horas</strong> para converter este lead.</p>
                <p style='margin: 10px 0 0 0;'>
                    <a href='mailto:{$email}?subject=Follow-up%20Plano%20{$plano}%20-%20TVI%20Tecnologia' 
                       style='background: #4CAFAF; color: white; padding: 8px 15px; text-decoration: none; border-radius: 4px; display: inline-block; margin-top: 8px; font-size: 0.9rem;'>
                       📧 Responder por E-mail
                    </a>
                </p>
            </div>
        </div>
        
        <div class='footer'>
            <p style='margin: 0;'>📧 Este e-mail foi gerado automaticamente pelo sistema de escolha de planos.</p>
            <p style='margin: 10px 0 0 0; opacity: 0.8;'>TVI Tecnologia &copy; " . date('Y') . " - Todos os direitos reservados.</p>
        </div>
    </div>
</body>
</html>
";

// Construir o e-mail HTML para o cliente
$assunto_cliente = "Confirmação de Interesse - Plano {$plano} - TVI Tecnologia";

$corpo_email_cliente = "
<!DOCTYPE html>
<html>
<body style='font-family: Arial, sans-serif; line-height: 1.6; background: #f5f5f5; padding: 20px;'>
    <div style='max-width: 600px; margin: 0 auto; background: white; padding: 25px; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.1);'>
        <h2 style='color: #4CAFAF; margin-top: 0;'>Olá {$nome}!</h2>
        <p>Recebemos seu interesse no <strong>Plano {$plano}</strong> da TVI Tecnologia.</p>
        
        <div style='background: #f8f9fa; padding: 20px; border-radius: 6px; margin: 20px 0; border-left: 4px solid #4CAFAF;'>
            <p><strong>Resumo da sua solicitação:</strong></p>
            <p>📋 <strong>Plano:</strong> {$plano}</p>
            <p>💰 <strong>Valor:</strong> R$ {$valor}/mês ({$periodo_formatado})</p>
            <p>📅 <strong>Data:</strong> {$data_interesse}</p>
            <p>🏢 <strong>Empresa:</strong> {$empresa}</p>
        </div>
        
        <p><strong>✅ Próximos passos:</strong></p>
        <p>Nossa equipe comercial entrará em contato com você em até <strong>24 horas úteis</strong> para:</p>
        <ul>
            <li>Apresentar a plataforma</li>
            <li>Tirar suas dúvidas</li>
            <li>Configurar seu acesso de teste</li>
        </ul>
        
        <p><strong>📞 Precisa falar conosco agora?</strong></p>
        <ul>
            <li><strong>WhatsApp:</strong> (11) 9999-9999</li>
            <li><strong>E-mail:</strong> comercial@tvitecnologia.com.br</li>
            <li><strong>Telefone:</strong> (11) 9999-9999</li>
        </ul>
        
        <p style='margin-top: 25px; padding-top: 20px; border-top: 1px solid #eee; color: #666;'>
            Atenciosamente,<br>
            <strong style='color: #4CAFAF;'>Equipe Comercial - TVI Tecnologia</strong>
        </p>
    </div>
</body>
</html>
";

// Configurações do e-mail
$destinatario_comercial = "comercial@tvitecnologia.com.br";
$destinatario_cliente = $email;
$remetente_nome = "Sistema de Planos - TVI";
$remetente_email = "sistema@tvitecnologia.com.br";

try {
    // 1. Enviar email para o comercial
    $resultado_comercial = enviarEmail(
        $destinatario_comercial,
        $assunto_comercial,
        $corpo_email_comercial,
        $remetente_nome,
        $remetente_email
    );
    
    // 2. Enviar email de confirmação para o cliente
    $resultado_cliente = enviarEmail(
        $destinatario_cliente,
        $assunto_cliente,
        $corpo_email_cliente,
        $remetente_nome,
        $remetente_email
    );
    
    // Log do envio
    $log_data = date('Y-m-d H:i:s') . " | Nome: {$nome} | Email: {$email} | Plano: {$plano} | Período: {$periodo_formatado} | Valor: R$ {$valor} | Status Comercial: " . ($resultado_comercial['success'] ? 'ENVIADO' : 'FALHA') . " | Status Cliente: " . ($resultado_cliente['success'] ? 'ENVIADO' : 'FALHA') . "\n";
    file_put_contents('logs/emails_planos.log', $log_data, FILE_APPEND);
    
    // Salvar lead em CSV também
    $csv_data = [
        date('Y-m-d H:i:s'),
        $nome,
        $email,
        $telefone,
        $empresa,
        $plano,
        $periodo_formatado,
        $valor,
        $ip_usuario,
        $resultado_comercial['success'] ? 'Sim' : 'Não',
        $resultado_cliente['success'] ? 'Sim' : 'Não'
    ];
    
    $csv_line = '"' . implode('","', $csv_data) . '"' . "\n";
    
    // Se o arquivo CSV não existe, criar com cabeçalho
    $csv_file = 'logs/leads.csv';
    if (!file_exists($csv_file)) {
        $cabecalho = '"Data","Nome","Email","Telefone","Empresa","Plano","Período","Valor","IP","Email Comercial Enviado","Email Cliente Enviado"' . "\n";
        file_put_contents($csv_file, $cabecalho);
    }
    
    file_put_contents($csv_file, $csv_line, FILE_APPEND);
    
    // Verificar resultados
    if ($resultado_comercial['success'] && $resultado_cliente['success']) {
        echo json_encode([
            'success' => true,
            'message' => 'E-mails enviados com sucesso!',
            'dados' => [
                'plano' => $plano,
                'valor' => $valor,
                'periodo' => $periodo_formatado,
                'email_cliente' => $email
            ]
        ]);
    } elseif ($resultado_comercial['success']) {
        echo json_encode([
            'success' => true,
            'message' => 'Lead registrado! O email de confirmação não pôde ser enviado, mas nossa equipe entrará em contato.',
            'dados' => [
                'plano' => $plano,
                'valor' => $valor,
                'periodo' => $periodo_formatado,
                'email_cliente' => $email
            ]
        ]);
    } else {
        // Log do erro
        $log_erro = date('Y-m-d H:i:s') . " | Erro ao enviar email via SMTP: " . $resultado_comercial['message'] . " | Email: $email\n";
        file_put_contents('logs/erros_email.log', $log_erro, FILE_APPEND);
        
        echo json_encode([
            'success' => false,
            'message' => 'Erro ao enviar e-mail. Por favor, tente novamente ou entre em contato diretamente.',
            'erro_tecnico' => $resultado_comercial['message']
        ]);
    }
    
} catch (Exception $e) {
    // Log do erro
    $log_erro = date('Y-m-d H:i:s') . " | Exceção ao processar lead: " . $e->getMessage() . " | Email: $email\n";
    file_put_contents('logs/erros_email.log', $log_erro, FILE_APPEND);
    
    echo json_encode([
        'success' => false,
        'message' => 'Erro ao processar sua solicitação: ' . $e->getMessage()
    ]);
}
?>