<?php

// =======================
// 🔧 Depuración
// =======================
error_reporting(E_ALL);
ini_set('display_errors', 1);

// =======================
// 📦 PHPMailer
// =======================
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require_once __DIR__ . '/PHPMailer/src/Exception.php';
require_once __DIR__ . '/PHPMailer/src/PHPMailer.php';
require_once __DIR__ . '/PHPMailer/src/SMTP.php';

// =======================
// 🔗 Conexión PDO
// =======================
require "conexion_PDO.php";

// =======================
// 🔐 Seguridad con Token
// =======================
$token = $_GET['token'] ?? '';
if ($token !== 'AscensoFacil2025') {
    http_response_code(403);
    die("Acceso no autorizado");
}

// =======================
// 📧 Función para enviar avisos
// =======================
function enviarAvisoVencimiento($email, $nombre, $diasRestantes) {
    $mail = new PHPMailer(true);
    try {
        $mail->isSMTP();
        $mail->Host       = 'mail.ascensofacil.com';
        $mail->SMTPAuth   = true;
        $mail->Username   = 'soporte@ascensofacil.com';
        $mail->Password   = '3DS0NCH4115H4CK3R+';
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
        $mail->Port       = 587;
        
        $mail->setFrom('soporte@ascensofacil.com', 'Simulador AscensoFacil');
        $mail->addAddress($email, $nombre);
        $mail->addBCC('siapol.soporte@gmail.com', 'Edson');
        $mail->addBCC('noldachipana@gmail.com', 'Nolda');
        
        $mail->isHTML(true);
        
        // Mensaje personalizado según días restantes
        if ($diasRestantes == 1) {
            $mensaje = "tu suscripción vencerá <b>MAÑANA</b>";
            $urgencia = "¡ÚLTIMO DÍA!";
        } else {
            $mensaje = "tu suscripción vencerá en <b>$diasRestantes días</b>";
            $urgencia = $diasRestantes <= 2 ? "¡URGENTE!" : "";
        }
        
        $mail->Subject = "⚠️ $urgencia Aviso de vencimiento de suscripción";
        $mail->Body    = "
            <h3>Hola $nombre</h3>
            <p>Te informamos que $mensaje.</p>
            <p>Si deseas renovarla, por favor comunícate con el administrador para realizar el pago y continuar con tu acceso.</p>
            <p><a href='https://ascensofacil.com' style='background-color:#007bff;color:white;padding:10px 15px;text-decoration:none;border-radius:5px;'>Ingresar a la plataforma</a></p>
            <hr>
            <p><small>Este es un recordatorio automático. Si ya renovaste tu suscripción, puedes ignorar este mensaje.</small></p>
        ";
        $mail->AltBody = "Hola $nombre,\n\n$mensaje.\nComunícate con el administrador para renovarla.";
        
        $mail->send();
        return true;
    } catch (Exception $e) {
        error_log("Error enviando aviso a $email: " . $mail->ErrorInfo);
        return false;
    }
}

// =======================
// ⏳ 1) Deshabilitar usuarios vencidos
// =======================
$sql = "UPDATE Usuarios 
        SET habilitado = 0 
        WHERE fecha_registro IS NOT NULL
        AND fecha_registro <> '0000-00-00 00:00:00'
        AND DATE_ADD(fecha_registro, INTERVAL 6 MONTH) <= NOW()
        AND habilitado = 1
        AND acceso_id <> 'ADMIN'";

$resultado = $pdo->query($sql);
$usuariosDeshabilitados = $resultado->rowCount();

// =======================
// 📩 2) Avisar a usuarios próximos a vencer
// =======================
$aviososEnviados = 0;

for ($dias = 5; $dias >= 1; $dias--) {
    $sqlAviso = "SELECT Id, usuario, nom_usuario 
                 FROM Usuarios 
                 WHERE fecha_registro IS NOT NULL
                 AND fecha_registro <> '0000-00-00 00:00:00'
                 AND DATE_ADD(fecha_registro, INTERVAL 6 MONTH) = DATE_ADD(CURDATE(), INTERVAL $dias DAY)
                 AND habilitado = 1
                 AND acceso_id <> 'ADMIN'";
    
    $stmt = $pdo->query($sqlAviso);
    
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $correo = $row['usuario'];
        $nombre = $row['nom_usuario'];
        
        if (enviarAvisoVencimiento($correo, $nombre, $dias)) {
            $aviososEnviados++;
            echo "📧 Aviso enviado a: $nombre ($correo) - Vence en $dias día(s)<br>";
        }
    }
}

// =======================
// 📊 Reporte final
// =======================
echo "<hr>";
echo "✅ <strong>Verificación completada:</strong><br>";
echo "👤 Usuarios deshabilitados: $usuariosDeshabilitados<br>";
echo "📧 Avisos enviados: $aviososEnviados<br>";
echo "📅 Fecha de ejecución: " . date('Y-m-d H:i:s');
?>
