<?php
// Incluir el archivo que contiene la función de redimensionar imagen
include 'funcionredimension.php';

// Configuración de la base de datos
$host = 'localhost';
$db = 'db_compranet';
$user = 'ndconsulta';
$pass = 'Nitro2021';
$charset = 'utf8mb4';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];

try {
    $pdo = new PDO($dsn, $user, $pass, $options);
} catch (\PDOException $e) {
    throw new \PDOException($e->getMessage(), (int)$e->getCode());
}

// Función para descargar la imagen
function downloadImage($url, $saveTo) {
    $img = file_get_contents($url);
    if ($img !== false) {
        file_put_contents($saveTo, $img);
        return true;
    }
    return false;
}

// Ruta de guardado
$rutaGuardado = "E:/www/sistema.compranet.com.co/public/images/201/PO/";
$rutaGuardadoDB = "J:/images/201/PO/";

// Consultas y procesos
$query1 = "
WITH cte AS (
    SELECT 
        vw_sin_imagen_raiz.id, 
        vw_sin_imagen_raiz.idEstado, 
        COALESCE(db_inventarios_compranet.promoopcion_imagenes_padre.urlImagen, CONCAT('https://www.promoopcioncolombia.co/Images/Items/', REPLACE(vw_sin_imagen_raiz.referenciaProveedor, ' ', '-'), '.jpg')) AS urlImagen, 
        vw_sin_imagen_raiz.idProveedor, 
        vw_sin_imagen_raiz.referenciaProveedor, 
        db_inventarios_compranet.promoopcion_imagenes_padre.esVector,
        ROW_NUMBER() OVER (PARTITION BY vw_sin_imagen_raiz.id ORDER BY db_inventarios_compranet.promoopcion_imagenes_padre.id ASC) AS rownumber
    FROM 
        vw_sin_imagen_raiz 
    INNER JOIN 
        db_inventarios_compranet.promoopcion_imagenes_padre 
    ON 
        vw_sin_imagen_raiz.referenciaProveedor = db_inventarios_compranet.promoopcion_imagenes_padre.skuPadre
    WHERE 
        vw_sin_imagen_raiz.idProveedor = 5
)
SELECT 
    id, 
    idEstado, 
    urlImagen, 
    idProveedor, 
    referenciaProveedor, 
    esVector, 
    rownumber
FROM 
    cte
ORDER BY 
    id, 
    rownumber ASC;
";

$stmt1 = $pdo->query($query1);
$results1 = $stmt1->fetchAll();

foreach ($results1 as $row) {
    // Obtener el nombre de la imagen desde la URL
    $imageName = basename($row['urlImagen']);
    if ($row['esVector'] == 1) {
        $imageName = 'VEC-' . $imageName;
    }
    $tempImagePath = sys_get_temp_dir() . '/' . $imageName;

    if (downloadImage($row['urlImagen'], $tempImagePath) && filesize($tempImagePath) > 0) {
        // Redimensionar la imagen
        $imagenRedimensionada = redimensionarImagen($tempImagePath, 1200, 1200);
        if ($imagenRedimensionada !== false) {
            $savePath = $rutaGuardado . $imageName;
            file_put_contents($savePath, $imagenRedimensionada);
            unlink($tempImagePath); // Eliminar la imagen temporal después de guardarla

            $linkImagen = $rutaGuardadoDB . $imageName;
            $esPrincipal = ($row['rownumber'] == 1) ? 1 : 0;
            $insertQuery = "INSERT IGNORE INTO tb_imagenes_principal (idProducto, linkImagen, esPrincipal, idEstado) VALUES (?, ?, ?, 1)";
            $pdo->prepare($insertQuery)->execute([$row['id'], $linkImagen, $esPrincipal]);
        }
    }
}

$query2 = "
WITH cte AS (
    SELECT 
        vw_sin_imagen_variacion.idVariacion, 
        vw_sin_imagen_variacion.referenciaCPN, 
        db_inventarios_compranet.promoopcion_imagenes_variantes.skuHijo, 
        COALESCE(db_inventarios_compranet.promoopcion_imagenes_variantes.urlImagen, CONCAT('https://www.promoopcioncolombia.co/Images/Items/', REPLACE(vw_sin_imagen_variacion.referenciaProveedor, ' ', '-'), '.jpg')) AS urlImagen, 
        vw_sin_imagen_variacion.idProveedor, 
        vw_sin_imagen_variacion.referenciaProveedor, 
        vw_sin_imagen_variacion.idProducto,
        ROW_NUMBER() OVER (PARTITION BY vw_sin_imagen_variacion.idVariacion ORDER BY db_inventarios_compranet.promoopcion_imagenes_variantes.ID ASC) AS rownumber
    FROM 
        vw_sin_imagen_variacion 
    LEFT JOIN 
        db_inventarios_compranet.promoopcion_imagenes_variantes 
    ON 
        vw_sin_imagen_variacion.referenciaProveedor = db_inventarios_compranet.promoopcion_imagenes_variantes.skuHijo
    WHERE 
        vw_sin_imagen_variacion.idProveedor = 5
)
SELECT 
    idVariacion, 
    referenciaCPN, 
    skuHijo, 
    urlImagen, 
    idProveedor, 
    referenciaProveedor, 
    idProducto, 
    rownumber
FROM 
    cte
ORDER BY 
    idVariacion, 
    rownumber ASC;
";

$stmt2 = $pdo->query($query2);
$results2 = $stmt2->fetchAll();

foreach ($results2 as $row) {
    // Obtener el nombre de la imagen desde la URL
    $imageName = basename($row['urlImagen']);
    $tempImagePath = sys_get_temp_dir() . '/' . $imageName;

    if (downloadImage($row['urlImagen'], $tempImagePath) && filesize($tempImagePath) > 0) {
        // Redimensionar la imagen
        $imagenRedimensionada = redimensionarImagen($tempImagePath, 1200, 1200);
        if ($imagenRedimensionada !== false) {
            $savePath = $rutaGuardado . $imageName;
            file_put_contents($savePath, $imagenRedimensionada);
            unlink($tempImagePath); // Eliminar la imagen temporal después de guardarla

            $linkImagen = $rutaGuardadoDB . $imageName;
            if ($row['rownumber'] == 1) {
                $insertQuery = "INSERT IGNORE INTO tb_imagenes_variantes (idVariante, idEstado, linkImagen, esPrincipal, pos) VALUES (?, 1, ?, 1, 1)";
                $pdo->prepare($insertQuery)->execute([$row['idVariacion'], $linkImagen]);
            } else {
                $insertQuery = "INSERT IGNORE INTO tb_imagenes_principal (idProducto, linkImagen, esPrincipal, idEstado) VALUES (?, ?, 0, 1)";
                $pdo->prepare($insertQuery)->execute([$row['idProducto'], $linkImagen]);
            }
        }
    }
}

echo "Proceso completado.";

?>
