<?php
// Incluir el archivo de conexión
include('conexion.php');

// Usar la conexión existente
if (!$conexion) {
    die("Error en la conexión a la base de datos: " . mysqli_error($conexion));
}

try {
    // Desactivar autocommit para manejar una transacción manual
    mysqli_autocommit($conexion, false);

    // 1. Crear la tabla temporal tbltmp
    $sqlCreateTemp = "
        CREATE TABLE tbltmp (
            idprd INT AUTO_INCREMENT PRIMARY KEY,
            numcns INT NOT NULL,
            fecprd DATE NOT NULL
        );
    ";
    if (!mysqli_query($conexion, $sqlCreateTemp)) {
        throw new Exception("Error creando la tabla temporal: " . mysqli_error($conexion));
    }

    // 2. Insertar los datos ordenados en tbltmp
    $sqlInsertTemp = "
        INSERT INTO tbltmp (numcns, fecprd)
        SELECT numcns, fecprd
        FROM prdhvo
        ORDER BY fecprd;
    ";
    if (!mysqli_query($conexion, $sqlInsertTemp)) {
        throw new Exception("Error insertando datos en tbltmp: " . mysqli_error($conexion));
    }

    // 3. Vaciar los datos de la tabla prdhvo
    $sqlTruncatePrdhvo = "TRUNCATE TABLE prdhvo;";
    if (!mysqli_query($conexion, $sqlTruncatePrdhvo)) {
        throw new Exception("Error vaciando la tabla prdhvo: " . mysqli_error($conexion));
    }

    // 4. Insertar los datos reorganizados desde tbltmp a prdhvo
    $sqlInsertPrdhvo = "
        INSERT INTO prdhvo (numcns, fecprd)
        SELECT numcns, fecprd
        FROM tbltmp;
    ";
    if (!mysqli_query($conexion, $sqlInsertPrdhvo)) {
        throw new Exception("Error insertando datos en prdhvo: " . mysqli_error($conexion));
    }

    // 5. Eliminar la tabla temporal tbltmp
    $sqlDropTemp = "DROP TABLE tbltmp;";
    if (!mysqli_query($conexion, $sqlDropTemp)) {
        throw new Exception("Error eliminando la tabla temporal tbltmp: " . mysqli_error($conexion));
    }

    // Confirmar transacción
    mysqli_commit($conexion);

    echo "<h1>Reindexación completada con éxito</h1>";
    echo "<p>La tabla <strong>prdhvo</strong> ha sido reindexada correctamente.</p>";
    echo "<a href='index.php'>Volver</a>";

} catch (Exception $e) {
    // Revertir la transacción en caso de error
    mysqli_rollback($conexion);
    echo "<h1>Error durante el proceso de reindexación</h1>";
    echo "<p>" . $e->getMessage() . "</p>";
    echo "<a href='index.php'>Volver</a>";
}

// Cerrar la conexión
mysqli_close($conexion);
?>
