<?php
include "../session.php"; 

if($role!="ADMIN"){
  header("Location:index.php");
  die();
}

// Función para comparar toda la base de datos y sincronizar los registros


$servername = "localhost"; // Nombre del servidor
$username = "root"; // Nombre de usuario de la base de datos local
$password = ""; // Contraseña de la base de datos local
$dbname = "du"; // Nombre de la base de datos local

// Establecer la conexión a la base de datos local
$conexionLocal = mysqli_connect($servername, $username, $password, $dbname);

// Verificar si se pudo establecer la conexión
if (!$conexionLocal) {
    die("Error al conectar a la base de datos local: " . mysqli_connect_error());
}



$hostname="jeazdesign.com";
$lineusername="jeazdesi_du_admin_line";
$linepass="Q@TCL]T4bgEB";
$linedatabase="jeazdesi_du_line";



// Establecer la conexión a la base de datos local
$conexionEnLinea = mysqli_connect($hostname, $lineusername, $linepass, $linedatabase);

// Verificar si se pudo establecer la conexión
if (!$conexionEnLinea) {
    die("Error al conectar a la base de datos En linea: " . mysqli_connect_error());
}
 

function compararBaseDatos($conexionLocal, $conexionEnLinea)
{
    // Obtener la lista de tablas en la base de datos local
    $tablas = mysqli_query($conexionLocal, "SHOW TABLES");
    while ($tabla = mysqli_fetch_row($tablas)) {
        $nombreTabla = $tabla[0];

        // Obtener los datos de la tabla en la base de datos local
        $datosTablaLocal = mysqli_query($conexionLocal, "SELECT * FROM $nombreTabla");

        // Obtener los datos de la tabla en la base de datos en línea
        $datosTablaEnLinea = mysqli_query($conexionEnLinea, "SELECT * FROM $nombreTabla");

        // Obtener los nombres de las columnas de la tabla
        $columnas = mysqli_query($conexionLocal, "SHOW COLUMNS FROM $nombreTabla");
        $nombresColumnas = [];
        while ($columna = mysqli_fetch_assoc($columnas)) {
            $nombresColumnas[] = $columna['Field'];
        }

        // Recorrer los datos de la tabla local
        while ($filaLocal = mysqli_fetch_assoc($datosTablaLocal)) {
            // Verificar si la fila existe en la tabla en línea
            $filaEnLinea = null;
            mysqli_data_seek($datosTablaEnLinea, 0); // Reiniciar el puntero de la consulta en línea

            while ($fila = mysqli_fetch_assoc($datosTablaEnLinea)) {
                if ($fila['ID'] == $filaLocal['ID']) {
                    $filaEnLinea = $fila;
                    break;
                }
            }

            // Si la fila no existe en la tabla en línea, agregarla
            if (!$filaEnLinea) {
                $valores = [];
                foreach ($filaLocal as $valor) {
                    $valores[] = mysqli_real_escape_string($conexionEnLinea, $valor);
                }
                $valores = implode("','", $valores);
                mysqli_query($conexionEnLinea, "INSERT INTO $nombreTabla VALUES ('$valores')");
            } else {
                // Verificar si los datos de la fila local difieren de la fila en línea
                $diferente = false;
                foreach ($nombresColumnas as $nombreColumna) {
                    if ($filaEnLinea[$nombreColumna] !== $filaLocal[$nombreColumna]) {
                        $diferente = true;
                        break;
                    }
                }

                // Actualizar la fila en línea si difiere de la fila local
                if ($diferente) {
                    $valores = [];
                    foreach ($filaLocal as $nombreColumna => $valor) {
                        $valor = mysqli_real_escape_string($conexionEnLinea, $valor);
                        $valores[] = "$nombreColumna = '$valor'";
                    }
                    $valores = implode(", ", $valores);
                    mysqli_query($conexionEnLinea, "UPDATE $nombreTabla SET $valores WHERE ID = " . $filaLocal['ID']);
                }
            }
        }
    }

    // Si se recorrió toda la base de datos y no se encontraron diferencias, los datos son iguales
    return true;
}

if (compararBaseDatos($conexionLocal, $conexionEnLinea)) {
    echo "Archivos actualizados correctamente";
} else {
    echo "No se ha ejecutado correctamente";
}
