<?php
require_once 'conexao.php';

// Configurar fuso horário
date_default_timezone_set('America/Sao_Paulo');

// Incluir PHPMailer (usando mesma estrutura do seu exemplo)
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';
require 'PHPMailer/src/Exception.php';

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

try {
    // Obter a data/hora atual
    $agora = new DateTime();

    // Consultar atividades que precisam de notificação
    $sql = "SELECT 
                a.id, 
                a.nome AS titulo, 
                a.descricao, 
                a.data_agendada,
                a.notificacao_minutos_antes,
                a.data_notificacao,
                u.email,
                u.nome AS usuario_nome
            FROM atividades a
            JOIN usuarios u ON a.usuario_id = u.id
            WHERE a.concluida = 0 
            AND a.ativo = 1
            AND a.notificacao_minutos_antes > 0
            AND a.data_agendada > NOW()
            AND (a.data_notificacao IS NULL OR a.data_notificacao = '0000-00-00 00:00:00')";  

    $result = $conn->query($sql);
    
    if (!$result) {
        throw new Exception("Erro na consulta: " . $conn->error);
    }

    $notificacoes = [];

    while ($row = $result->fetch_assoc()) {
        $data_atividade = new DateTime($row['data_agendada']);
        $minutos_antes = (int)$row['notificacao_minutos_antes'];
        
        // Calcular quando a notificação deveria ser enviada
        $hora_notificacao = (clone $data_atividade)->sub(new DateInterval('PT' . $minutos_antes . 'M'));
        
        // DEBUG: Log para verificar cálculos
        file_put_contents('notificacoes_debug.log', 
            "Atividade: {$row['titulo']}\n" .
            "Data atividade: {$row['data_agendada']}\n" .
            "Minutos antes: $minutos_antes\n" .
            "Hora notificação: " . $hora_notificacao->format('Y-m-d H:i:s') . "\n" .
            "Agora: " . $agora->format('Y-m-d H:i:s') . "\n" .
            "Diferença: " . ($agora->getTimestamp() - $hora_notificacao->getTimestamp()) . " segundos\n\n", 
            FILE_APPEND
        );
        
        // Verificar se JÁ PASSOU da hora de notificar
        if ($agora->getTimestamp() >= $hora_notificacao->getTimestamp()) {
            $notificacoes[] = $row;
            
            file_put_contents('notificacoes_debug.log', 
                "✅ NOTIFICAÇÃO AGENDADA: {$row['titulo']}\n",
                FILE_APPEND
            );
        }
    }

    // DEBUG
    file_put_contents('notificacoes_debug.log', 
        "=== " . date('Y-m-d H:i:s') . " ===\n" .
        "Total de notificações a enviar: " . count($notificacoes) . "\n\n", 
        FILE_APPEND
    );

    // Enviar notificações
    $enviadas = 0;
    foreach ($notificacoes as $notificacao) {
        if (enviarNotificacaoPHPMailer($notificacao)) {
            marcarComoNotificada($notificacao['id'], $conn);
            $enviadas++;
        }
    }

    echo "Processamento concluído. $enviadas notificações enviadas.\n";

} catch (Exception $e) {
    file_put_contents('notificacoes_erro.log', 
        date('Y-m-d H:i:s') . " - ERRO: " . $e->getMessage() . "\n", 
        FILE_APPEND
    );
    echo "Erro no processamento: " . $e->getMessage() . "\n";
}

function enviarNotificacaoPHPMailer($dados) {
    $mail = new PHPMailer(true);
    
    try {
        // ⭐⭐ CONFIGURAÇÃO IDÊNTICA AO SEU EXEMPLO QUE FUNCIONA ⭐⭐
        $mail->isSMTP();
        $mail->Host = 'ns242.hostgator.com.br'; // Mesmo host
        $mail->SMTPAuth = true;
        $mail->Username = 'recuperacao@son.tvitecnologia.com.br'; // Mesmo email
        $mail->Password = 'Gabrielito@1'; // Mesma senha
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
        $mail->Port = 587;
        $mail->CharSet = 'UTF-8';
        $mail->SMTPDebug = 0; // Mantém 0 para produção
        
        // Remetente e destinatário
        $mail->setFrom('recuperacao@son.tvitecnologia.com.br', 'SON TVi Tecnologia - Notificações');
        $mail->addAddress($dados['email'], $dados['usuario_nome']);
        $mail->addReplyTo('suporte@son.tvitecnologia.com.br', 'Suporte');
        
        // Conteúdo do email
        $mail->isHTML(true);
        $mail->Subject = "🔔 Lembrete de Atividade: " . $dados['titulo'];
        
        $data_brasil = date('d/m/Y H:i', strtotime($dados['data_agendada']));
        
        $mail->Body = "
            <html>
            <head>
                <meta charset='UTF-8'>
                <style>
                    body { font-family: Arial, sans-serif; line-height: 1.6; color: #333; }
                    .container { max-width: 600px; margin: 0 auto; padding: 20px; }
                    .destaque { 
                        background-color: #f4f4f4; 
                        padding: 15px; 
                        border-radius: 5px; 
                        margin: 15px 0;
                        border-left: 4px solid #3498db;
                    }
                    .info { color: #666; font-size: 0.9em; }
                    .detalhes { margin: 10px 0; }
                </style>
            </head>
            <body>
                <div class='container'>
                    <h2>🔔 Lembrete de Atividade</h2>
                    <p>Olá <strong>{$dados['usuario_nome']}</strong>,</p>
                    
                    <div class='destaque'>
                        <h3 style='margin-top: 0;'>{$dados['titulo']}</h3>
                        <div class='detalhes'>
                            <strong>📝 Descrição:</strong> " . ($dados['descricao'] ?: 'Nenhuma descrição') . "<br>
                            <strong>⏰ Data/Hora:</strong> {$data_brasil}<br>
                            <strong>⏳ Notificação:</strong> {$dados['notificacao_minutos_antes']} minutos antes
                        </div>
                    </div>
                    
                    <p class='info'>Esta é uma notificação automática do sistema.</p>
                    <p>Atenciosamente,<br><strong>Equipe SON TVi Tecnologia</strong></p>
                </div>
            </body>
            </html>
        ";
        
        // Versão texto simples (para clientes de email que não suportam HTML)
        $mail->AltBody = "LEMBRETE DE ATIVIDADE\n\n"
            . "Olá {$dados['usuario_nome']},\n\n"
            . "Você tem uma atividade programada:\n\n"
            . "Título: {$dados['titulo']}\n"
            . "Descrição: " . ($dados['descricao'] ?: 'Nenhuma descrição') . "\n"
            . "Data/Hora: {$data_brasil}\n"
            . "Notificação: {$dados['notificacao_minutos_antes']} minutos antes\n\n"
            . "Atenciosamente,\n"
            . "Equipe SON TVi Tecnologia";

        $enviado = $mail->send();
        
        // Registrar no log
        $log_msg = date('Y-m-d H:i:s') . " - Notificação ENVIADA para " . 
                   $dados['email'] . " - Atividade: " . $dados['titulo'] . "\n";
        file_put_contents('notificacoes.log', $log_msg, FILE_APPEND);
        
        return $enviado;
        
    } catch (Exception $e) {
        // Registrar erro detalhado
        $error_msg = date('Y-m-d H:i:s') . " - ERRO Notificação: " . $mail->ErrorInfo . 
                     " - Para: " . $dados['email'] . " - Atividade: " . $dados['titulo'] . "\n";
        file_put_contents('notificacoes_erro.log', $error_msg, FILE_APPEND);
        
        return false;
    }
}

function marcarComoNotificada($atividade_id, $conn) {
    $sql = "UPDATE atividades SET data_notificacao = NOW() WHERE id = ?";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("i", $atividade_id);
    $stmt->execute();
    $stmt->close();
}

$conn->close();
?>