<?php
/**
 * CRON CLEANUP SCRIPT (api/cron_cleanup.php)
 * Este script está diseñado para ser ejecutado por una tarea programada (Cron Job) en el servidor.
 * Su función es limpiar las mediciones antiguas para mantener la base de datos rápida y escalable.
 */

require_once __DIR__ . '/../config.php';

// Opcional: Proteger el script para que solo se pueda ejecutar desde la consola (CLI) o con un token secreto.
// Para cPanel, a menudo se ejecuta vía wget/curl local. Usamos un token básico de seguridad:
$secret_token = 'tecnotrack_cron_f7a9b2'; // Puedes cambiar esto
$is_cli = (php_sapi_name() === 'cli');
$valid_token = (isset($_GET['token']) && $_GET['token'] === $secret_token);

if (!$is_cli && !$valid_token) {
    http_response_code(403);
    die("Acceso denegado. Este script debe ejecutarse mediante Cron con el token correcto o vía CLI.");
}

// Configurar logging
$logDir = __DIR__ . '/../logs';
if (!is_dir($logDir)) {
    @mkdir($logDir, 0755, true);
}
$logFile = $logDir . '/cron_cleanup.log';

function logCron($msg)
{
    global $logFile;
    $date = date('Y-m-d H:i:s');
    @file_put_contents($logFile, "[$date] $msg\n", FILE_APPEND);
    echo "[$date] $msg<br>\n";
}

logCron("INICIO: Ejecutando limpieza de retención de 30 días...");

try {
    $pdo = getDBConnection();
    if (!$pdo) {
        throw new Exception("Error de conexión a la base de datos.");
    }

    // Ejecutar limpieza: Borrar todo lo anterior a 30 días atrás
    $stmt = $pdo->prepare("DELETE FROM mediciones WHERE fecha < DATE_SUB(NOW(), INTERVAL 30 DAY)");
    $stmt->execute();

    $deletedRowscount = $stmt->rowCount();
    logCron("ÉXITO: Se eliminaron $deletedRowscount registros antiguos.");

} catch (Exception $e) {
    logCron("ERROR CRÍTICO: " . $e->getMessage());
}

logCron("FIN: Tarea de limpieza completada.");
echo "COMPLETADO";
