<?php
declare(strict_types=1);

$time = time();
require __DIR__ . '/concha.php'; // debe definir: $host, $usuario, $contra, $basedatos

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

try {
    $db = new mysqli($host, $usuario, $contra, $basedatos);
    $db->set_charset('utf8mb4');

    // 1) Obtener el próximo ID disponible (max + 1)
    $ultimoId = 1;
    $res = $db->query("SELECT ID FROM notas ORDER BY ID DESC LIMIT 1");
    if ($row = $res->fetch_assoc()) {
        $ultimoId = ((int)$row['ID']) + 1;
    }
    $res->free();

    // 2) Buscar notas a publicar (fechapub <= ahora y ver = 'no')
    // NOTA: Esto asume que fechapub es un timestamp UNIX (INT).
    // Si fechapub fuera DATETIME, ver alternativa más abajo.
    $stmt = $db->prepare("SELECT ID FROM notas WHERE fechapub <= ? AND ver = 'no' ORDER BY ID ASC");
    $stmt->bind_param("i", $time);
    $stmt->execute();
    $result = $stmt->get_result();

    // 3) Preparar updates (reutilizables)
    $updVer = $db->prepare("UPDATE notas SET ver = 'si' WHERE ID = ? LIMIT 1");
    $updId  = $db->prepare("UPDATE notas SET ID = ? WHERE ID = ? LIMIT 1");

    $i_publi = 0;

    while ($row = $result->fetch_assoc()) {
        $idViejo = (int)$row['ID'];
        $i_publi++;

        // (opcional) mostrar el ID procesado
        echo $idViejo;

        // marcar como vista/publicada
        $updVer->bind_param("i", $idViejo);
        $updVer->execute();

        // mover al final asignando un ID nuevo (max+1, max+2, ...)
        $idNuevo = $ultimoId++;
        $updId->bind_param("ii", $idNuevo, $idViejo);
        $updId->execute();
    }

    $result->free();
    $stmt->close();
    $updVer->close();
    $updId->close();
    $db->close();

} catch (mysqli_sql_exception $e) {
    http_response_code(500);
    echo "Error DB: " . $e->getMessage();
    exit;
}

/*
ALTERNATIVA si fechapub es DATETIME (no timestamp):
- Reemplazá el SELECT por:
$stmt = $db->prepare("SELECT ID FROM notas WHERE fechapub <= NOW() AND ver = 'no' ORDER BY ID ASC");
$stmt->execute();
$result = $stmt->get_result();
*/