<?php

include('simple_html_dom.php');
require $_SERVER['DOCUMENT_ROOT'] . '/vendor/autoload.php';
use Stichoza\GoogleTranslate\GoogleTranslate;

$servername = "localhost";
$username = "ndconsulta";
$password = "Nitro2021";
$dbname = "db_tiendanitro";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$truncateTableQuery = "TRUNCATE TABLE inv_ricmotech_info";
$conn->query($truncateTableQuery);

$getLinksQuery = "SELECT link FROM inv_ricmotech_links";
$result = $conn->query($getLinksQuery);

$totalLinks = $result->num_rows;
$currentLink = 0;

if ($totalLinks > 0) {
    while ($row = $result->fetch_assoc()) {
        $currentLink++;
        $url = $row['link'];

        // Inicializar cURL
        $ch = curl_init();

        // Configurar opciones de cURL
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

        // Ejecutar cURL y obtener el contenido de la URL
        $htmlContent = curl_exec($ch);

        // Verificar si hubo algún error en la solicitud
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

        // Cerrar la sesión cURL
        curl_close($ch);

        if ($httpCode == 404) {
            echo "Error accessing link (404 Not Found): $url. Skipping...\n";
            continue;
        }

        // Procesar el contenido HTML con simple_html_dom
        $html = str_get_html($htmlContent);

        if (!$html) {
            echo "Error processing HTML for link: $url. Skipping...\n";
            continue;
        }

        $productNameEn = $html->find('h1[itemprop=name]', 0);
        if ($productNameEn) {
            $productNameEn = $productNameEn->plaintext;
        } else {
            echo "Product name not found for link: $url. Skipping...\n";
            continue;
        }

        $availability = $html->find('span[itemprop=availability]', 0);
        $availability = $availability ? $availability->plaintext : 'Not available';

        $tr = new GoogleTranslate();
        $tr->setSource('en'); // Traducir del inglés
        $tr->setTarget('es'); // Al español
        $productName = $tr->translate($productNameEn); // Traducción

        $priceText = $html->find('span#price', 0);
        $price = $priceText ? floatval(preg_replace('/[^0-9.]/', '', $priceText->plaintext)) : 0.0;

        $sku = $html->find('span#product_id', 0);
        $sku = $sku ? trim($sku->plaintext) : '';

        $productAvailability = $html->find('span.product_availability.availability-item', 0);
        $productAvailability = $productAvailability ? $productAvailability->plaintext : 'Unknown';

        $imagenes = ['', '', '', '', '', ''];
        $imageElements = $html->find('li.prod-thumb');

        foreach ($imageElements as $index => $element) {
            $imageLink = $element->find('a[data-zoom-id=listing_main_image_link]', 0);
            if ($imageLink && $index < 6) {
                $imagenes[$index] = $imageLink->href;
            }
        }

        $shortDescriptionElement = $html->find('div.short-description[itemprop=description]', 0);
        $descripcioncortaen = $shortDescriptionElement ? $shortDescriptionElement->innertext : '';

        $descriptionElement = $html->find('div.item[itemprop=description]', 0);
        $descripcionen = $descriptionElement ? $descriptionElement->innertext : '';

        $descripcion = $tr->translate($descripcionen); // Traducción
        $descripcioncorta = $tr->translate($descripcioncortaen); // Traducción

        $sql = "INSERT INTO inv_ricmotech_info (ProductName, Availability, price, sku, productAvailability, image1, image2, image3, image4, image5, image6, descripcion, descripcion_corta) VALUES ('$productName', '$availability', '$price', '$sku', '$productAvailability', '$imagenes[0]', '$imagenes[1]', '$imagenes[2]', '$imagenes[3]', '$imagenes[4]', '$imagenes[5]', '$descripcion', '$descripcioncorta')";

        if ($conn->query($sql) === TRUE) {
            echo "Record inserted successfully\n";
        } else {
            echo "Error: " . $sql . "<br>" . $conn->error . "\n";
        }

        $percentage = ($currentLink / $totalLinks) * 100;
        echo "Progress: " . number_format($percentage, 2) . "%\n";
    }
} else {
    echo "No links found in pd_links table\n";
}

$conn->close();
?>
