<?php
date_default_timezone_set('America/Bogota');

// Desactivar la visualización de errores
ini_set('display_errors', 1);
error_reporting(1);

// Función para realizar una petición cURL y devolver la respuesta
function realizarPeticionCurl($url)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    if (curl_errno($ch)) {
        echo 'Error en cURL: ' . curl_error($ch);
    }
    curl_close($ch);
    return json_decode($response, true);
}

// Obtener la lista de productos
$apiUrl = "https://esferos.com/site/api/products?output_format=JSON&ws_key=6QW5T3HTWPMREMYZQ8TW8FH3JY45YGGZ";
$productList = realizarPeticionCurl($apiUrl);

$data = [];

if (isset($productList['products'])) {
    foreach ($productList['products'] as $product) {
        $productId = $product['id'];

        // Obtener detalles del producto
        $productDetailsUrl = "https://esferos.com/site/api/products/$productId?output_format=JSON&ws_key=6QW5T3HTWPMREMYZQ8TW8FH3JY45YGGZ";
        $productDetails = realizarPeticionCurl($productDetailsUrl);

        if (isset($productDetails['product'])) {
            // Extraer la información necesaria
            $product = $productDetails['product'];
            $productData = [
                'product_id' => $productId,
                'reference' => $product['reference'],
                'price' => $product['price'],
                'available_for_order' => $product['available_for_order'],
                'visibility' => $product['visibility'],
                'meta_title' => $product['meta_title'],
                'name' => $product['name'],
                'description' => $product['description'],
                'description_short' => $product['description_short'],
                'id_default_image' => $product['id_default_image'],
                'associations' => [
                    'categories' => [],
                    'images' => [],
                    'combinations' => [],
                    'product_option_values' => [],
                    'product_features' => [],
                    'stock_availables' => []
                ]
            ];

            // Procesar las asociaciones
            if (isset($product['associations'])) {
                foreach ($product['associations']['categories'] as $category) {
                    $productData['associations']['categories'][] = $category['id'];
                }

                foreach ($product['associations']['images'] as $image) {
                    $productData['associations']['images'][] = $image['id'];
                }

                foreach ($product['associations']['combinations'] as $combination) {
                    $productData['associations']['combinations'][] = $combination['id'];
                }

                foreach ($product['associations']['product_option_values'] as $option) {
                    $productData['associations']['product_option_values'][] = $option['id'];
                }

                foreach ($product['associations']['product_features'] as $feature) {
                    $productData['associations']['product_features'][] = [
                        'feature_id' => $feature['id'],
                        'feature_value_id' => $feature['id_feature_value']
                    ];
                }

                foreach ($product['associations']['stock_availables'] as $stock) {
                    $productData['associations']['stock_availables'][] = [
                        'stock_id' => $stock['id'],
                        'id_product_attribute' => $stock['id_product_attribute']
                    ];
                }
            }

            // Añadir los datos del producto al array principal
            $data['products'][] = $productData;
        }
    }
}

// Obtener la lista de precios específicos
$specificPricesUrl = "https://esferos.com/site/api/specific_prices/?output_format=JSON&ws_key=6QW5T3HTWPMREMYZQ8TW8FH3JY45YGGZ";
$specificPricesList = realizarPeticionCurl($specificPricesUrl);

if (isset($specificPricesList['specific_prices'])) {
    foreach ($specificPricesList['specific_prices'] as $specificPrice) {
        $idSpecificPrice = $specificPrice['id'];
        $specificPriceUrl = "https://esferos.com/site/api/specific_prices/$idSpecificPrice?output_format=JSON&ws_key=6QW5T3HTWPMREMYZQ8TW8FH3JY45YGGZ";
        $specificPriceDetails = realizarPeticionCurl($specificPriceUrl);

        if (isset($specificPriceDetails['specific_price'])) {
            $specificPrice = $specificPriceDetails['specific_price'];
            $specificPriceData = [
                'id_specific_price' => $specificPrice['id'],
                'id_product' => $specificPrice['id_product'],
                'id_product_attribute' => $specificPrice['id_product_attribute'],
                'price' => $specificPrice['price'],
                'from_quantity' => $specificPrice['from_quantity'],
                'reduction' => $specificPrice['reduction'],
                'reduction_type' => $specificPrice['reduction_type'],
                'from_date' => $specificPrice['from'],
                'to_date' => $specificPrice['to']
            ];

            // Añadir los datos del precio específico al array principal
            $data['specific_prices'][] = $specificPriceData;
        }
    }
}

// Convertir el array principal a JSON
$jsonData = json_encode($data, JSON_PRETTY_PRINT);

// Mostrar el JSON
header('Content-Type: application/json');
echo $jsonData;
?>
