<?php
// Incluir el archivo que contiene la función de redimensionar imagen
include 'funcionredimension.php';

// Datos de conexión a la base de datos
$servername = "localhost";
$username = "ndconsulta";
$password = "Nitro2021";
$dbname = "db_compranet";

$ruta_guardado = "E:/www/sistema.compranet.com.co/public/images/201/BP/";
$base_url = "https://esferos.com/site/api/images/products/";
$ws_key = "6QW5T3HTWPMREMYZQ8TW8FH3JY45YGGZ";

// Crear conexión
$conn = new mysqli($servername, $username, $password, $dbname);

// Verificar conexión
if ($conn->connect_error) {
    die("Error de conexión: " . $conn->connect_error);
}

// Consulta para imágenes raíz
$query_raiz = "
SELECT
    vw_sin_imagen_raiz.id,
    vw_sin_imagen_raiz.referenciaCPN,
    vw_sin_imagen_raiz.referenciaProveedor,
    vw_sin_imagen_raiz.idProveedor,
    vw_sin_imagen_raiz.idEstado,
    db_inventarios_compranet.boton_aux_imagenes_principal.imagen_id,
    db_inventarios_compranet.boton_aux_imagenes_principal.esPrincipal
FROM
    vw_sin_imagen_raiz
INNER JOIN db_inventarios_compranet.boton_aux_imagenes_principal ON
    vw_sin_imagen_raiz.referenciaProveedor = db_inventarios_compranet.boton_aux_imagenes_principal.product_id
WHERE
    vw_sin_imagen_raiz.idProveedor = 4
ORDER BY referenciaProveedor ASC, esPrincipal DESC";

$result_raiz = $conn->query($query_raiz);

if ($result_raiz->num_rows > 0) {
    while ($row = $result_raiz->fetch_assoc()) {
        $idProducto = $row['id'];
        $referenciaProveedor = $row['referenciaProveedor'];
        $imagen_id = $row['imagen_id'];
        $esPrincipal = $row['esPrincipal'];

        $image_url = "{$base_url}{$referenciaProveedor}/{$imagen_id}?&ws_key={$ws_key}";
        $image_path = $ruta_guardado . "{$imagen_id}.jpg";

        if (!file_exists($image_path)) {
            $temp_image_path = sys_get_temp_dir() . "/{$imagen_id}.jpg";
            if (download_image($image_url, $temp_image_path)) {
                // Redimensionar la imagen
                $imagenRedimensionada = redimensionarImagen($temp_image_path, 1200, 1200);
                if ($imagenRedimensionada !== false) {
                    file_put_contents($image_path, $imagenRedimensionada);
                    unlink($temp_image_path); // Eliminar la imagen temporal después de guardarla

                    $linkImagen = "J:/images/201/BP/{$imagen_id}.jpg";
                    $idEstado = 1;

                    $stmt = $conn->prepare("INSERT INTO tb_imagenes_principal (idProducto, linkImagen, idEstado, esPrincipal) VALUES (?, ?, ?, ?)");
                    $stmt->bind_param("isii", $idProducto, $linkImagen, $idEstado, $esPrincipal);
                    $stmt->execute();
                }
            }
        } else {
            $linkImagen = "J:/images/201/BP/{$imagen_id}.jpg";
            $idEstado = 1;

            $stmt = $conn->prepare("INSERT INTO tb_imagenes_principal (idProducto, linkImagen, idEstado, esPrincipal) VALUES (?, ?, ?, ?)");
            $stmt->bind_param("isii", $idProducto, $linkImagen, $idEstado, $esPrincipal);
            $stmt->execute();
        }
    }
}

// Consulta para imágenes de combinaciones
$query_variacion = "
SELECT
    vw_sin_imagen_variacion.idVariacion,
    vw_sin_imagen_variacion.idProveedor,
    vw_sin_imagen_variacion.proveedorRaiz AS proveedorRaiz,
    vw_sin_imagen_variacion.idProducto,
    db_inventarios_compranet.boton_lista_imagenes_combinacion.imagen_id,
    ROW_NUMBER() OVER (PARTITION BY vw_sin_imagen_variacion.idVariacion ORDER BY db_inventarios_compranet.boton_lista_imagenes_combinacion.imagen_id) as pos
FROM
    vw_sin_imagen_variacion
INNER JOIN
    db_inventarios_compranet.boton_lista_combinaciones ON
    vw_sin_imagen_variacion.referenciaProveedor = CONCAT(db_inventarios_compranet.boton_lista_combinaciones.product_id, '-', db_inventarios_compranet.boton_lista_combinaciones.referencia)
INNER JOIN
    db_inventarios_compranet.boton_lista_imagenes_combinacion ON
    db_inventarios_compranet.boton_lista_combinaciones.combination_id = db_inventarios_compranet.boton_lista_imagenes_combinacion.combination_id
ORDER BY
    vw_sin_imagen_variacion.idProducto,
    vw_sin_imagen_variacion.idVariacion,
    db_inventarios_compranet.boton_lista_imagenes_combinacion.imagen_id;";

$result_variacion = $conn->query($query_variacion);

if ($result_variacion->num_rows > 0) {
    while ($row = $result_variacion->fetch_assoc()) {
        $idVariante = $row['idVariacion'];
        $idProducto = $row['idProducto'];
        $idProveedorRaiz = $row['proveedorRaiz'];
        $imagen_id = $row['imagen_id'];
        $pos = $row['pos'];

        $image_url = "{$base_url}{$idProveedorRaiz}/{$imagen_id}?&ws_key={$ws_key}";
        $image_path = $ruta_guardado . "{$imagen_id}.jpg";

        if (!file_exists($image_path)) {
            $temp_image_path = sys_get_temp_dir() . "/{$imagen_id}.jpg";
            if (download_image($image_url, $temp_image_path)) {
                // Redimensionar la imagen
                $imagenRedimensionada = redimensionarImagen($temp_image_path, 1200, 1200);
                if ($imagenRedimensionada !== false) {
                    file_put_contents($image_path, $imagenRedimensionada);
                    unlink($temp_image_path); // Eliminar la imagen temporal después de guardarla

                    $linkImagen = "J:/images/201/BP/{$imagen_id}.jpg";
                    $idEstado = 1;

                    if ($pos == 1) {
                        $esPrincipal = 1;
                        $stmt = $conn->prepare("INSERT INTO tb_imagenes_variantes (idVariante, idEstado, linkImagen, esPrincipal, pos) VALUES (?, ?, ?, ?, ?)");
                        $stmt->bind_param("iisii", $idVariante, $idEstado, $linkImagen, $esPrincipal, $pos);
                        $stmt->execute();
                    } else {
                        $esPrincipal = 0;
                        $stmt = $conn->prepare("INSERT INTO tb_imagenes_principal (idProducto, linkImagen, idEstado, esPrincipal) VALUES (?, ?, ?, ?)");
                        $stmt->bind_param("isii", $idProducto, $linkImagen, $idEstado, $esPrincipal);
                        $stmt->execute();
                    }
                }
            }
        } else {
            $linkImagen = "J:/images/201/BP/{$imagen_id}.jpg";
            $idEstado = 1;

            if ($pos == 1) {
                $esPrincipal = 1;
                $stmt = $conn->prepare("INSERT INTO tb_imagenes_variantes (idVariante, idEstado, linkImagen, esPrincipal, pos) VALUES (?, ?, ?, ?, ?)");
                $stmt->bind_param("iisii", $idVariante, $idEstado, $linkImagen, $esPrincipal, $pos);
                $stmt->execute();
            } else {
                $esPrincipal = 0;
                $stmt = $conn->prepare("INSERT INTO tb_imagenes_principal (idProducto, linkImagen, idEstado, esPrincipal) VALUES (?, ?, ?, ?)");
                $stmt->bind_param("isii", $idProducto, $linkImagen, $idEstado, $esPrincipal);
                $stmt->execute();
            }
        }
    }
}

// Función para descargar la imagen
function download_image($url, $path) {
    $ch = curl_init($url);
    $fp = fopen($path, 'wb');

    curl_setopt($ch, CURLOPT_FILE, $fp);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 60); // Timeout after 60 seconds
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Disable SSL verification

    $success = curl_exec($ch);
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    fclose($fp);

    // Check if the image was successfully downloaded
    if ($success && $http_code == 200 && filesize($path) > 0) {
        return true;
    } else {
        // Delete the empty file if download failed
        if (file_exists($path)) {
            unlink($path);
        }
        return false;
    }
}

$conn->close();
?>
