<?php
/**
 * Storefront engine room
 *
 * @package storefront
 */

/**
 * Assign the Storefront version to a var
 */
$theme              = wp_get_theme( 'storefront' );
$storefront_version = $theme['Version'];

/**
 * Set the content width based on the theme's design and stylesheet.
 */
if ( ! isset( $content_width ) ) {
	$content_width = 980; /* pixels */
}

$storefront = (object) array(
	'version'    => $storefront_version,

	/**
	 * Initialize all the things.
	 */
	'main'       => require 'inc/class-storefront.php',
	'customizer' => require 'inc/customizer/class-storefront-customizer.php',
);

require 'inc/storefront-functions.php';
require 'inc/storefront-template-hooks.php';
require 'inc/storefront-template-functions.php';
require 'inc/wordpress-shims.php';

if ( class_exists( 'Jetpack' ) ) {
	$storefront->jetpack = require 'inc/jetpack/class-storefront-jetpack.php';
}

if ( storefront_is_woocommerce_activated() ) {
	$storefront->woocommerce            = require 'inc/woocommerce/class-storefront-woocommerce.php';
	$storefront->woocommerce_customizer = require 'inc/woocommerce/class-storefront-woocommerce-customizer.php';

	require 'inc/woocommerce/class-storefront-woocommerce-adjacent-products.php';

	require 'inc/woocommerce/storefront-woocommerce-template-hooks.php';
	require 'inc/woocommerce/storefront-woocommerce-template-functions.php';
	require 'inc/woocommerce/storefront-woocommerce-functions.php';
}

if ( is_admin() ) {
	$storefront->admin = require 'inc/admin/class-storefront-admin.php';

	require 'inc/admin/class-storefront-plugin-install.php';
}

/**
 * NUX
 * Only load if wp version is 4.7.3 or above because of this issue;
 * https://core.trac.wordpress.org/ticket/39610?cversion=1&cnum_hist=2
 */
if ( version_compare( get_bloginfo( 'version' ), '4.7.3', '>=' ) && ( is_admin() || is_customize_preview() ) ) {
	require 'inc/nux/class-storefront-nux-admin.php';
	require 'inc/nux/class-storefront-nux-guided-tour.php';
	require 'inc/nux/class-storefront-nux-starter-content.php';
}

/**
 * Note: Do not add any custom code here. Please use a custom plugin so that your customizations aren't lost during updates.
 * https://github.com/woocommerce/theme-customisations
 */

// ============================================
// CUSTOM CART AJAX FUNCTIONS
// ============================================

// Enqueue script per AJAX URL
add_action('wp_enqueue_scripts', 'custom_cart_enqueue_scripts');
function custom_cart_enqueue_scripts() {
    wp_localize_script('jquery', 'custom_cart_params', array(
        'ajax_url' => admin_url('admin-ajax.php')
    ));
}

// Forza Italia come paese di spedizione predefinito
add_filter('woocommerce_customer_default_location', 'force_italy_as_default_country');
function force_italy_as_default_country() {
    return 'IT';
}

// Imposta automaticamente Italia nel carrello
add_action('woocommerce_cart_calculate_fees', 'auto_set_italy_shipping');
function auto_set_italy_shipping() {
    if (is_admin() && !defined('DOING_AJAX')) return;
    
    WC()->customer->set_shipping_country('IT');
    WC()->customer->set_billing_country('IT');
}

// Calcola automaticamente le spedizioni per l'Italia
add_action('wp_loaded', 'auto_calculate_shipping_for_italy');
function auto_calculate_shipping_for_italy() {
    if (!is_admin() && WC()->cart && !WC()->cart->is_empty()) {
        WC()->customer->set_shipping_country('IT');
        WC()->customer->set_calculated_shipping(true);
    }
}

// AJAX per ottenere contenuto carrello
add_action('wp_ajax_custom_get_cart_contents', 'custom_get_cart_contents');
add_action('wp_ajax_nopriv_custom_get_cart_contents', 'custom_get_cart_contents');

function custom_get_cart_contents() {
    if (WC()->cart->is_empty()) {
        wp_send_json_error();
    }
    
    // Forza Italia come paese
    WC()->customer->set_shipping_country('IT');
    WC()->customer->set_billing_country('IT');
    WC()->customer->set_calculated_shipping(true);
    
    // Calcola i totali del carrello
    WC()->cart->calculate_shipping();
    WC()->cart->calculate_totals();
    
    ob_start();
    
    // PRODOTTI
    foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {
        $product = $cart_item['data'];
        $product_id = $cart_item['product_id'];
        $quantity = $cart_item['quantity'];
        $line_total = WC()->cart->get_product_subtotal($product, $cart_item['quantity']);
        
        echo '<div class="cart-item">';
        echo '<div class="cart-item-image">';
        echo get_the_post_thumbnail($product_id, 'thumbnail');
        echo '</div>';
        echo '<div class="cart-item-details">';
        echo '<div class="cart-item-title">' . $product->get_name() . '</div>';
        echo '<div class="cart-item-price">' . $line_total . '</div>';
        echo '<div class="cart-item-quantity">';
        echo '<button class="qty-btn qty-minus">−</button>';
        echo '<input type="number" class="cart-quantity-input" value="' . $quantity . '" min="1" data-cart-item-key="' . $cart_item_key . '">';
        echo '<button class="qty-btn qty-plus">+</button>';
        echo '</div>';
        echo '</div>';
        echo '<a href="#" class="remove-cart-item" data-cart-item-key="' . $cart_item_key . '">×</a>';
        echo '</div>';
    }
    
    // FORM SPEDIZIONE CON METODI
    echo '<div class="cart-shipping-form">';
    echo '<h4 class="form-section-title">📦 Dati di Spedizione</h4>';
    
    // Campi del form
    echo '<div class="form-row">';
    echo '<div class="form-field">';
    echo '<input type="text" id="shipping_first_name" placeholder="Nome *" required>';
    echo '</div>';
    echo '<div class="form-field">';
    echo '<input type="text" id="shipping_last_name" placeholder="Cognome *" required>';
    echo '</div>';
    echo '</div>';
    
    echo '<div class="form-row">';
    echo '<div class="form-field">';
    echo '<input type="text" id="shipping_cf" placeholder="Codice Fiscale *" maxlength="16" required>';
    echo '</div>';
    echo '<div class="form-field">';
    echo '<input type="number" id="shipping_birth_year" placeholder="Anno di nascita *" min="1900" max="2024" required>';
    echo '</div>';
    echo '</div>';
    
    // METODI DI SPEDIZIONE
    $packages = WC()->shipping()->get_packages();
    $shipping_methods = array();
    
    if (!empty($packages)) {
        foreach ($packages as $package_key => $package) {
            $available_methods = WC()->shipping()->calculate_shipping_for_package($package);
            if (!empty($available_methods['rates'])) {
                foreach ($available_methods['rates'] as $rate_id => $rate) {
                    $shipping_methods[] = array(
                        'id' => $rate_id,
                        'label' => $rate->get_label(),
                        'cost' => floatval($rate->get_cost())
                    );
                }
            }
        }
    }
    
    if (!empty($shipping_methods)) {
        echo '<div class="shipping-methods-minimal">';
        echo '<label class="shipping-label">🚚 Metodo di Spedizione</label>';
        
        foreach ($shipping_methods as $index => $method) {
            $checked = $index === 0 ? 'checked' : '';
            $cost_clean = $method['cost'];
            
            echo '<label class="shipping-option-minimal">';
            echo '<input type="radio" name="shipping_method" value="' . esc_attr($method['id']) . '" ' . $checked . ' class="shipping-radio" data-cost="' . $cost_clean . '">';
            echo '<span class="shipping-info">';
            echo '<span class="shipping-name">' . esc_html($method['label']) . '</span>';
            echo '<span class="shipping-price">' . number_format($cost_clean, 2, ',', '.') . ' €</span>';
            echo '</span>';
            echo '</label>';
        }
        
        echo '</div>';
    }
    
    echo '</div>'; // chiude cart-shipping-form
    
    // TOTALI CON VALORI NUMERICI PURI
    $subtotal = floatval(WC()->cart->get_subtotal());
    $shipping_cost = !empty($shipping_methods) ? $shipping_methods[0]['cost'] : 0;
    $total = $subtotal + $shipping_cost;
    
    echo '<div class="cart-totals">';
    
    echo '<div class="cart-total-row">';
    echo '<span class="cart-total-label">Subtotale:</span>';
    echo '<span class="cart-total-value cart-subtotal-value" data-subtotal="' . $subtotal . '">' . number_format($subtotal, 2, ',', '.') . ' €</span>';
    echo '</div>';
    
    echo '<div class="cart-total-row">';
    echo '<span class="cart-total-label">Spedizione:</span>';
    echo '<span class="cart-total-value cart-shipping-value" data-shipping="' . $shipping_cost . '">' . number_format($shipping_cost, 2, ',', '.') . ' €</span>';
    echo '</div>';
    
    echo '<div class="cart-total-row cart-total-final">';
    echo '<span class="cart-total-label">Totale:</span>';
    echo '<span class="cart-total-value cart-total-amount" data-total="' . $total . '">' . number_format($total, 2, ',', '.') . ' €</span>';
    echo '</div>';
    
    echo '</div>';
    
    $html = ob_get_clean();
    
    wp_send_json_success(array('html' => $html));
}

// AJAX per rimuovere prodotto dal carrello
add_action('wp_ajax_remove_cart_item', 'remove_cart_item_ajax');
add_action('wp_ajax_nopriv_remove_cart_item', 'remove_cart_item_ajax');

function remove_cart_item_ajax() {
    $cart_item_key = sanitize_text_field($_POST['cart_item_key']);
    
    if (WC()->cart->remove_cart_item($cart_item_key)) {
        WC()->cart->calculate_totals();
        wp_send_json_success();
    } else {
        wp_send_json_error();
    }
}

// AJAX per aggiornare quantità prodotto
add_action('wp_ajax_update_cart_quantity', 'update_cart_quantity_ajax');
add_action('wp_ajax_nopriv_update_cart_quantity', 'update_cart_quantity_ajax');

function update_cart_quantity_ajax() {
    $cart_item_key = sanitize_text_field($_POST['cart_item_key']);
    $quantity = intval($_POST['quantity']);
    
    if ($quantity < 1) {
        $quantity = 1;
    }
    
    if (WC()->cart->set_quantity($cart_item_key, $quantity)) {
        WC()->cart->calculate_totals();
        wp_send_json_success();
    } else {
        wp_send_json_error();
    }
}