<?php
/**
 * KUNLUN INSTITUTE MASTER V14.4 - LA FORTEZZA
 * Include: Prezzi Dinamici, Seminari Auto, Upload Certificato, Blocco Carrello, PayPal Forzato e Checkout Rapido.
 */
if ( ! defined( 'ABSPATH' ) ) exit;

/* ==========================================================================
   📦 MODULO 1: MAPPA GRADI
   ========================================================================== */
function get_kunlun_mappa() {
    return [
        'base'       => 'Kung-Fu Base',
        'medio'      => 'Kung-Fu Medio',
        'avanzato'   => 'Kung-Fu Avanzato',
        'taiji1'     => 'Taiji 1ª Forma',
        'taiji2'     => 'Taiji 2ª Forma',
        'taiji3'     => 'Taiji 3ª Forma',
        'posturale'  => 'Ginnastica Posturale',
        'insegnante' => 'Insegnante',
        'sifu'       => 'Maestro / Sifu'
    ];
}

/* ==========================================================================
   📦 MODULO 2: SEGRETERIA (Gestione Card Allievi in Elementor)
   ========================================================================== */
add_shortcode('tabella_segreteria_kunlun', function() {
    if (!current_user_can('manage_options')) return 'Accesso negato.';
    $utenti = get_users(['orderby' => 'display_name']); 
    $mappa = get_kunlun_mappa();
    $oggi = date('Ymd');
    ob_start(); ?>
    <div class="kunlun-cards-container">
        <?php foreach ($utenti as $u): 
            $id = $u->ID;
            $g_raw = get_field('grado_allievi', 'user_'.$id);
            $gradi_attuali = is_array($g_raw) ? $g_raw : ($g_raw ? [$g_raw] : []);
            $etichette_gradi = [];
            foreach($gradi_attuali as $g) { if(isset($mappa[$g])) $etichette_gradi[] = $mappa[$g]; }
            $testo_gradi = empty($etichette_gradi) ? 'Nessun Grado' : implode(', ', $etichette_gradi);
            $stringa_gradi_data = implode(',', $gradi_attuali);
            $ultimo_ordine = wc_get_customer_last_order($id);
            $stato_p = '<span style="color:#e74c3c;">🔴 Non pagato</span>';
            if ($ultimo_ordine && $ultimo_ordine->get_status() == 'completed') {
                $stato_p = '<span style="color:#27ae60;">🟢 Pagato ('.$ultimo_ordine->get_date_completed()->date('d/m').')</span>';
            }
            $scadenza = get_field('scadenza_certificato', 'user_'.$id);
            $file_c = get_field('file_certificato', 'user_'.$id);
            $stile_scadenza = ($scadenza && $scadenza < $oggi) ? 'border: 2px solid #e74c3c; background: rgba(255,245,245,0.9);' : 'border: 1px solid rgba(0,0,0,0.05);';
        ?>
        <div class="allievo-card" data-gradi="<?php echo esc_attr($stringa_gradi_data); ?>" style="<?php echo $stile_scadenza; ?>">
            <h3 style="color:#0c406c; margin:0; font-size:18px; font-family:'Ubuntu';"><?php echo esc_html($u->display_name); ?></h3>
            <div style="font-size:11px; margin:10px 0; font-weight:bold; line-height:1.6; font-family:'Ubuntu';">
                <?php echo $stato_p; ?><br>
                <span style="color:#0c406c;">🎓 Grado: <span id="label-grado-<?php echo $id; ?>"><?php echo esc_html($testo_gradi); ?></span></span>
            </div>
            <details class="modern-dd">
                <summary>Gestisci Ruoli e Gradi</summary>
                <div class="dd-content">
                    <?php foreach($mappa as $val => $label): ?>
                        <label><input type="checkbox" class="chk-grado-<?php echo $id; ?>" value="<?php echo $val; ?>" <?php echo in_array($val, $gradi_attuali) ? 'checked' : ''; ?>> <?php echo $label; ?></label>
                    <?php endforeach; ?>
                </div>
            </details>
            <div style="background:rgba(244,247,249,0.6); padding:10px; border-radius:10px; margin:15px 0; font-size:11px; font-family:'Ubuntu';">
                <label style="font-weight:bold;">SCADENZA CERTIFICATO:</label>
                <input type="date" id="scad-<?php echo $id; ?>" class="edit-scad-c" value="<?php echo $scadenza ? date('Y-m-d', strtotime($scadenza)) : ''; ?>" style="width:100%; margin-top:5px; padding:5px; border:1px solid rgba(0,0,0,0.1); border-radius:5px; background:rgba(255,255,255,0.7);">
                <?php if($file_c): ?><a href="<?php echo esc_url($file_c); ?>" target="_blank" style="display:block; margin-top:8px; font-weight:bold; color:#0c406c; text-decoration:none;">📄 APRI PDF (Caricato da Allievo)</a><?php endif; ?>
            </div>
            <button onclick="salvaDati(<?php echo $id; ?>)" id="btn-<?php echo $id; ?>" style="width:100%; background:#0c406c; color:#fff; border:none; padding:10px; border-radius:8px; cursor:pointer; font-weight:bold; font-family:'Ubuntu';">AGGIORNA ALLIEVO</button>
        </div>
        <?php endforeach; ?>
    </div>
    <?php return ob_get_clean();
});

/* ==========================================================================
   📦 MODULO 3: DASHBOARD ALLIEVI (Tendina Dinamica e Checkout Rapido)
   ========================================================================== */
add_shortcode('kunlun_dashboard', function() {
    if (!is_user_logged_in()) return '<div style="background:#fff; padding:30px; text-align:center; border-radius:20px; font-family:\'Ubuntu\';">Effettua il login per accedere.</div>';
    
    // --- CONFIGURAZIONE LINK VIDEO ---
    $vid_kf_base_1     = "https://www.youtube.com/watch?v=LINK_BASE_1";
    $vid_kf_base_2     = "https://www.youtube.com/watch?v=LINK_BASE_2";
    $vid_kf_medio_1    = "https://www.youtube.com/watch?v=LINK_MEDIO_1";
    $vid_kf_medio_2    = "https://www.youtube.com/watch?v=LINK_MEDIO_2";
    $vid_kf_avanzato_1 = "https://www.youtube.com/watch?v=LINK_AVANZATO_1";
    $vid_kf_avanzato_2 = "https://www.youtube.com/watch?v=LINK_AVANZATO_2";
    
    $vid_taiji_1       = "https://www.youtube.com/watch?v=LINK_TAIJI_1";
    $vid_taiji_2       = "https://www.youtube.com/watch?v=LINK_TAIJI_2";
    $vid_taiji_3       = "https://www.youtube.com/watch?v=LINK_TAIJI_3";
    $vid_posturale     = "https://www.youtube.com/watch?v=LINK_POSTURALE";

    $id = get_current_user_id();
    $raw = get_field('grado_allievi', 'user_'.$id);
    $gradi = is_array($raw) ? array_map('strtolower', $raw) : ($raw ? [strtolower($raw)] : []);
    
    $check = function($s) use ($gradi) { return in_array(strtolower($s), $gradi) || current_user_can('manage_options'); };
    
    $is_sifu = $check('sifu') || current_user_can('manage_options');
    $is_insegnante = $check('insegnante') && !$is_sifu;

    // Logica per mostrare la tendina dei rinnovi dinamicamente
    $ha_marziali = $check('base') || $check('medio') || $check('avanzato') || $check('taiji1') || $check('taiji2') || $check('taiji3') || $check('sifu') || $check('insegnante') || current_user_can('manage_options');
    $ha_posturale = $check('posturale') || current_user_can('manage_options');

    // --- SINCRONIZZAZIONE PREZZI WOOCOMMERCE ---
    $get_price_label = function($prod_id) {
        if(function_exists('wc_get_product')) {
            $product = wc_get_product($prod_id);
            if($product) return ' - ' . strip_tags(wc_price($product->get_price()));
        }
        return '';
    };

    $prezzo_kf    = $get_price_label(607);
    $prezzo_taiji = $get_price_label(611);
    $prezzo_combo = $get_price_label(612);
    $prezzo_post  = $get_price_label(136);

    // URL della pagina di checkout di WooCommerce
    $checkout_url = function_exists('wc_get_checkout_url') ? wc_get_checkout_url() : '/checkout/';

    ob_start(); ?>
    <style>
        .db-sicura { background:#fff; padding:40px; border-radius:25px; font-family:'Ubuntu', sans-serif; color:#0c406c; max-width:1100px; margin:auto; box-shadow:0 10px 40px rgba(0,0,0,0.1); position:relative; z-index:1; overflow:hidden; }
        .db-sicura::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: url('http://istituto-demo.local/wp-content/uploads/2026/03/Screenshot-2026-02-16-191821.png'); background-repeat: no-repeat; background-position: center; background-size: 400px; opacity: 0.06; z-index: 0; pointer-events: none; }
        .db-content-wrapper { position: relative; z-index: 2; }
        .db-grid { display: grid; grid-template-columns: 2fr 1fr; gap: 30px; margin-top: 30px; }
        .card-corso { background:rgba(244,247,249,0.85); backdrop-filter:blur(4px); padding:20px; border-radius:15px; box-shadow:0 5px 15px rgba(0,0,0,0.03); display:flex; justify-content:space-between; align-items:center; margin-bottom:20px; border:1px solid rgba(0,0,0,0.05); }
        .btn-blue { background:#0c406c; color:#fff; padding:12px 20px; border-radius:10px; text-decoration:none; font-weight:bold; font-size:13px; font-family:'Ubuntu'; display:inline-block; }
        .btn-cyan { background:#6cc4c7; color:#0c406c; padding:12px 20px; border-radius:10px; text-decoration:none; font-weight:bold; font-size:13px; font-family:'Ubuntu'; display:inline-block; }
        .sifu-banner { background: linear-gradient(135deg, #d4af37, #f1c40f); padding: 15px 25px; border-radius: 15px; margin-bottom: 25px; color: #fff; text-align: center; box-shadow: 0 5px 20px rgba(212, 175, 55, 0.4); text-transform: uppercase; letter-spacing: 2px; }
        .insegnante-banner { background: linear-gradient(135deg, #0c406c, #1a5b92); padding: 12px 20px; border-radius: 12px; margin-bottom: 25px; color: #fff; text-align: center; box-shadow: 0 4px 15px rgba(12, 64, 108, 0.3); letter-spacing: 1px; }
        .upload-box { background: rgba(255,255,255,0.9); border: 2px dashed #6cc4c7; padding: 20px; border-radius: 15px; text-align: center; margin-bottom: 20px; }
        .upload-box input[type="file"] { margin: 10px 0; font-family: 'Ubuntu'; font-size: 12px; }
        .upload-btn { background: #6cc4c7; color: #0c406c; padding: 8px 15px; border: none; border-radius: 8px; font-weight: bold; cursor: pointer; }
        @media(max-width:768px){ .db-grid { grid-template-columns: 1fr; } }
    </style>
    <div class="db-sicura" <?php if($is_sifu) echo 'style="border: 2px solid #d4af37;"'; ?>>
        <div class="db-content-wrapper">
            
            <?php if($is_sifu): ?>
                <div class="sifu-banner"><h2 style="margin: 0; font-size: 20px; font-weight:900;">🐉 Area Riservata Maestro 🐉</h2></div>
                <h1 style="margin:0; font-size:28px; font-family:'Ubuntu';">Benvenuto, Maestro <span style="color:#d4af37;"><?php echo esc_html(wp_get_current_user()->display_name); ?></span></h1>
            <?php elseif($is_insegnante): ?>
                <div class="insegnante-banner"><h3 style="margin: 0; font-size: 16px; font-weight:bold;">🎓 Pannello Insegnante</h3></div>
                <h1 style="margin:0; font-size:28px; font-family:'Ubuntu';">Bentornato, <span style="color:#6cc4c7;"><?php echo esc_html(wp_get_current_user()->display_name); ?></span></h1>
            <?php else: ?>
                <h1 style="margin:0; font-size:28px; font-family:'Ubuntu';">Ciao, <span style="color:#6cc4c7;"><?php echo esc_html(wp_get_current_user()->display_name); ?></span></h1>
            <?php endif; ?>

            <div class="db-grid">
                <div>
                    <?php if ($check('base') || $check('medio') || $check('avanzato')): 
                        $link_kf_1 = $vid_kf_base_1; $link_kf_2 = $vid_kf_base_2; $label_kf = 'Base';
                        if($check('avanzato')) { $link_kf_1 = $vid_kf_avanzato_1; $link_kf_2 = $vid_kf_avanzato_2; $label_kf = 'Avanzato'; } 
                        elseif($check('medio')) { $link_kf_1 = $vid_kf_medio_1; $link_kf_2 = $vid_kf_medio_2; $label_kf = 'Medio'; }
                    ?>
                        <h3 style="border-bottom: 2px solid #0c406c; padding-bottom:10px;">🥋 Il tuo Kung-Fu</h3>
                        <div class="card-corso" style="display:block;">
                            <div style="display:flex; justify-content:space-between; align-items:center; margin-bottom:15px;">
                                <div><span style="font-size:11px; font-weight:bold; color:#6cc4c7;">LIVELLO</span><h4 style="margin:5px 0;"><?php echo $label_kf; ?></h4></div>
                            </div>
                            <div style="display:flex; gap:10px;">
                                <a href="<?php echo $link_kf_1; ?>" target="_blank" class="btn-blue" style="flex:1; text-align:center;">VIDEO 1</a>
                                <a href="<?php echo $link_kf_2; ?>" target="_blank" class="btn-blue" style="flex:1; text-align:center;">VIDEO 2</a>
                            </div>
                        </div>
                    <?php endif; ?>

                    <?php if ($check('taiji1') || $check('taiji2') || $check('taiji3')): 
                        $link_tj = $vid_taiji_1; $label_tj = '1ª Forma';
                        if($check('taiji3')) { $link_tj = $vid_taiji_3; $label_tj = '3ª Forma'; }
                        elseif($check('taiji2')) { $link_tj = $vid_taiji_2; $label_tj = '2ª Forma'; }
                    ?>
                        <h3 style="border-bottom: 2px solid #6cc4c7; padding-bottom:10px; margin-top:30px;">☯️ Il tuo Taiji Quan</h3>
                        <div class="card-corso">
                            <div><span style="font-size:11px; font-weight:bold; color:#0c406c;">FORMA</span><h4 style="margin:5px 0;"><?php echo $label_tj; ?></h4></div>
                            <a href="<?php echo $link_tj; ?>" target="_blank" class="btn-cyan">GUARDA LEZIONI</a>
                        </div>
                    <?php endif; ?>

                    <?php if ($check('posturale')): ?>
                        <h3 style="border-bottom: 2px solid #e67e22; padding-bottom:10px; margin-top:30px; color:#e67e22;">🧘‍♀️ Ginnastica Posturale</h3>
                        <div class="card-corso" style="border-left:4px solid #e67e22;">
                            <div><span style="font-size:11px; font-weight:bold; color:#e67e22;">PERCORSO ATTIVO</span><h4 style="margin:5px 0;">Posturale</h4></div>
                            <a href="<?php echo $vid_posturale; ?>" target="_blank" class="btn-blue" style="background:#e67e22;">GUARDA LEZIONI</a>
                        </div>
                    <?php endif; ?>

                    <h3 style="border-bottom: 2px solid #ddd; padding-bottom:10px; margin-top:30px;">📅 Prossimi Seminari</h3>
                    <?php 
                    if(function_exists('wc_get_products')) {
                        $seminari = wc_get_products(array('category' => array('seminari'), 'status' => 'publish', 'limit' => -1));
                        if(!empty($seminari)) {
                            foreach($seminari as $sem) {
                                ?>
                                <div class="card-corso" style="border-left:4px solid #0c406c;">
                                    <div><h4 style="margin:0;"><?php echo esc_html($sem->get_name()); ?></h4><span style="font-size:11px;"><?php echo strip_tags(wc_price($sem->get_price())); ?></span></div>
                                    <a href="<?php echo $checkout_url; ?>?add-to-cart=<?php echo $sem->get_id(); ?>" class="btn-blue" style="background:rgba(255,255,255,0.8); color:#0c406c; border: 1px solid #0c406c;">ISCRIVITI SUBITO</a>
                                </div>
                                <?php
                            }
                        } else {
                            echo '<p style="font-size:13px; color:#777;">Nessun seminario disponibile al momento.</p>';
                        }
                    }
                    ?>
                </div>
                
                <div>
                    <div class="upload-box">
                        <h4 style="margin:0 0 10px 0; color:#0c406c; font-family:'Ubuntu';">📄 Carica Certificato</h4>
                        <p style="font-size:11px; color:#555; margin:0 0 10px 0;">Carica qui il tuo certificato medico (PDF o JPG).</p>
                        <form id="form-upload-cert" enctype="multipart/form-data">
                            <input type="file" name="cert_file" accept=".pdf,.jpg,.jpeg,.png" required style="width:100%;">
                            <input type="hidden" name="action" value="upload_certificato_allievo">
                            <button type="submit" class="upload-btn" id="btn-up-cert">INVIA CERTIFICATO</button>
                        </form>
                        <div id="msg-upload" style="font-size:11px; margin-top:10px; font-weight:bold;"></div>
                    </div>

                    <div style="background:rgba(12,64,108,0.95); backdrop-filter:blur(5px); color:#fff; padding:25px; border-radius:20px;">
                        <h4 style="margin:0 0 15px 0; font-family:'Ubuntu';">Rinnovo Rapido</h4>
                        <select id="sel-paga" style="width:100%; padding:12px; border-radius:8px; margin-bottom:20px; font-weight:bold; color:#0c406c; font-family:'Ubuntu';">
                            <?php if($ha_marziali): ?>
                            <optgroup label="Corsi Associazione (ASD)">
                                <option value="607">Mese Kung Fu<?php echo $prezzo_kf; ?></option>
                                <option value="611">Mese Taiji<?php echo $prezzo_taiji; ?></option>
                                <option value="612">Combo (KF + Taiji)<?php echo $prezzo_combo; ?></option>
                            </optgroup>
                            <?php endif; ?>
                            
                            <?php if($ha_posturale): ?>
                            <optgroup label="Corsi P.IVA">
                                <option value="136">Ginnastica Posturale<?php echo $prezzo_post; ?></option>
                            </optgroup>
                            <?php endif; ?>
                        </select>
                        <a id="btn-paga" href="<?php echo $checkout_url; ?>?add-to-cart=<?php echo $ha_marziali ? '607' : '136'; ?>" style="display:block; background:#6cc4c7; color:#0c406c; text-align:center; padding:15px; border-radius:10px; font-weight:900; text-decoration:none; font-family:'Ubuntu'; text-transform:uppercase;">PAGA ORA</a>
                    </div>
                </div>
            </div>
        </div>
    </div>
    
    <script>
    var checkoutUrl = "<?php echo $checkout_url; ?>";
    jQuery('#sel-paga').on('change', function(){ 
        jQuery('#btn-paga').attr('href', checkoutUrl + '?add-to-cart=' + jQuery(this).val()); 
    });
    
    // Script Upload AJAX
    jQuery('#form-upload-cert').on('submit', function(e) {
        e.preventDefault();
        var formData = new FormData(this);
        jQuery('#btn-up-cert').text('CARICAMENTO...').prop('disabled', true);
        jQuery.ajax({
            url: '/wp-admin/admin-ajax.php', type: 'POST', data: formData,
            contentType: false, processData: false,
            success: function(res) {
                if(res.success) {
                    jQuery('#msg-upload').css('color','#27ae60').text('✅ Caricato con successo!');
                    jQuery('#btn-up-cert').text('INVIA CERTIFICATO').prop('disabled', false);
                } else {
                    jQuery('#msg-upload').css('color','#e74c3c').text('❌ Errore: Riprova.');
                    jQuery('#btn-up-cert').text('INVIA CERTIFICATO').prop('disabled', false);
                }
            }
        });
    });
    </script>
    <?php return ob_get_clean();
});

/* ==========================================================================
   📦 MODULO 4: REGISTRAZIONE 
   ========================================================================== */
add_shortcode('tabella_registrazione', function() {
    $token = isset($_GET['invito']) ? sanitize_text_field($_GET['invito']) : '';
    if (!get_transient('kunlun_invito_' . $token)) return '<div style="text-align:center; padding:50px; background:#fff; border-radius:20px; font-family:\'Ubuntu\'; box-shadow:0 10px 30px rgba(0,0,0,0.1);"><h3>Link di invito scaduto o invalido ❌</h3></div>';
    ob_start(); ?>
    <style>
        .reg-sicura { max-width:500px; margin:auto; background:rgba(255,255,255,0.95); padding:40px; border-radius:25px; box-shadow:0 15px 40px rgba(0,0,0,0.1); font-family:'Ubuntu'; color:#0c406c; position: relative; overflow: hidden; z-index: 1; }
        .reg-sicura::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: url('http://istituto-demo.local/wp-content/uploads/2026/03/Screenshot-2026-02-16-191821.png'); background-repeat: no-repeat; background-position: center; background-size: 350px; opacity: 0.06; z-index: 0; pointer-events: none; }
        .reg-content-wrapper { position: relative; z-index: 2; }
    </style>
    <div class="reg-sicura">
        <form id="form-allievo" class="reg-content-wrapper">
            <input type="hidden" name="invito" value="<?php echo $token; ?>">
            <input type="hidden" name="action" value="azione_registra_allievo">
            <h2 style="text-align:center; margin-bottom:25px; font-weight: 800; font-size: 24px; font-family:'Ubuntu';">Iscrizione Kunlun</h2>
            <div style="display:flex; gap:10px; margin-bottom:12px;">
                <input type="text" name="nome" placeholder="Nome" required style="width:50%; padding:12px; border:1px solid rgba(0,0,0,0.1); border-radius:10px;">
                <input type="text" name="cognome" placeholder="Cognome" required style="width:50%; padding:12px; border:1px solid rgba(0,0,0,0.1); border-radius:10px;">
            </div>
            <input type="email" name="email" placeholder="Email" required style="width:100%; padding:12px; border:1px solid rgba(0,0,0,0.1); border-radius:10px; margin-bottom:12px;">
            <input type="password" name="password" placeholder="Password (Min. 8 char, Maiusc, Num, Simb)" required pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\W_]).{8,}" style="width:100%; padding:12px; border:1px solid rgba(0,0,0,0.1); border-radius:10px; margin-bottom:20px;">
            <p style="font-size:12px; font-weight:bold; margin-bottom:10px; font-family:'Ubuntu';">SELEZIONA I TUOI CORSI:</p>
            <div style="background:rgba(244,247,249,0.5); backdrop-filter:blur(3px); padding:15px; border-radius:12px; margin-bottom:25px; border:1px solid rgba(0,0,0,0.05);">
                <label style="display:block; margin-bottom:10px; font-weight:bold; cursor:pointer;"><input type="checkbox" name="corsi[]" value="base"> Kung-Fu</label>
                <label style="display:block; margin-bottom:10px; font-weight:bold; cursor:pointer;"><input type="checkbox" name="corsi[]" value="taiji1"> Taiji Quan</label>
                <label style="display:block; font-weight:bold; color:#e67e22; cursor:pointer;"><input type="checkbox" name="corsi[]" value="posturale"> Ginnastica Posturale</label>
            </div>
            <p style="font-size:11px; font-weight:bold; color:#6cc4c7; text-transform:uppercase; font-family:'Ubuntu';">Dati Fiscali:</p>
            <input type="text" name="cf" placeholder="Codice Fiscale" required pattern="^[A-Za-z]{6}[0-9]{2}[A-Za-z][0-9]{2}[A-Za-z][0-9]{3}[A-Za-z]$" style="width:100%; padding:12px; border:1px solid rgba(0,0,0,0.1); border-radius:10px; margin-bottom:12px; text-transform:uppercase;">
            <input type="text" name="indirizzo" placeholder="Indirizzo e Civico" required style="width:100%; padding:12px; border:1px solid rgba(0,0,0,0.1); border-radius:10px; margin-bottom:12px;">
            <div style="display:flex; gap:10px; margin-bottom:25px;">
                <input type="text" name="citta" placeholder="Città" required style="width:50%; padding:12px; border:1px solid rgba(0,0,0,0.1); border-radius:10px;">
                <input type="text" name="cap" placeholder="CAP" required pattern="[0-9]{5}" style="width:25%; padding:12px; border:1px solid rgba(0,0,0,0.1); border-radius:10px;">
                <input type="text" name="provincia" placeholder="PR" required pattern="[A-Za-z]{2}" style="width:25%; padding:12px; border:1px solid rgba(0,0,0,0.1); border-radius:10px; text-transform:uppercase;">
            </div>
            <div style="margin-bottom: 20px; font-size: 12px; padding: 10px; background:rgba(250,250,250,0.6); border-radius: 8px; border:1px solid rgba(0,0,0,0.05); font-family:'Ubuntu';">
                <label style="font-weight:bold; cursor:pointer;"><input type="checkbox" name="privacy" required> Accetto la <a href="/privacy-policy" target="_blank" style="color:#6cc4c7;">Privacy Policy</a></label>
            </div>
            <button type="submit" id="btn-reg" style="width:100%; background:#0c406c; color:#fff; border:none; padding:16px; border-radius:12px; font-weight:bold; cursor:pointer; font-family:'Ubuntu'; font-size:16px;">COMPLETA E ACCEDI</button>
            <div id="msg-reg" style="text-align:center; margin-top:15px; font-weight:bold;"></div>
        </form>
    </div>
    <script>
    jQuery('#form-allievo').on('submit', function(e) {
        e.preventDefault();
        jQuery('#btn-reg').text('Verifica...').prop('disabled', true);
        jQuery.post('/wp-admin/admin-ajax.php', jQuery(this).serialize(), function(res) {
            if(res.success) window.location.href = res.data.redirect;
            else { jQuery('#msg-reg').css('color','#e74c3c').text('❌ '+res.data); jQuery('#btn-reg').text('COMPLETA E ACCEDI').prop('disabled', false); }
        });
    });
    </script>
    <?php return ob_get_clean();
});

/* ==========================================================================
   📦 MODULO 5: MOTORE AJAX E CONTROLLO CARRELLO
   ========================================================================== */
add_action('wp_ajax_salva_dati_allievo', function() {
    if (!current_user_can('manage_options')) wp_die();
    $id = intval($_POST['user_id']);
    update_field('grado_allievi', $_POST['grado'], 'user_' . $id);
    update_field('scadenza_certificato', str_replace('-', '', sanitize_text_field($_POST['scad_c'])), 'user_' . $id);
    wp_send_json_success();
});

add_action('wp_ajax_upload_certificato_allievo', function() {
    if (!is_user_logged_in() || empty($_FILES['cert_file'])) wp_send_json_error();
    require_once(ABSPATH . 'wp-admin/includes/file.php');
    $file = $_FILES['cert_file'];
    $upload = wp_handle_upload($file, array('test_form' => false));
    if (isset($upload['url'])) {
        $user_id = get_current_user_id();
        update_field('file_certificato', $upload['url'], 'user_' . $user_id);
        wp_send_json_success();
    } else {
        wp_send_json_error();
    }
});

add_action('wp_ajax_nopriv_azione_registra_allievo', 'kunlun_motore_registrazione');
add_action('wp_ajax_azione_registra_allievo', 'kunlun_motore_registrazione');
function kunlun_motore_registrazione() {
    $token = sanitize_text_field($_POST['invito']);
    if (!get_transient('kunlun_invito_' . $token)) wp_send_json_error('Link scaduto.');
    $cf = strtoupper(sanitize_text_field($_POST['cf']));
    $pwd = $_POST['password'];
    if (!preg_match('/^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$/i', $cf)) wp_send_json_error('Codice Fiscale non valido.');
    $user_id = wp_create_user(sanitize_email($_POST['email']), $pwd, sanitize_email($_POST['email']));
    if (is_wp_error($user_id)) wp_send_json_error($user_id->get_error_message());
    wp_update_user(['ID'=>$user_id, 'display_name'=>sanitize_text_field($_POST['nome']).' '.sanitize_text_field($_POST['cognome'])]);
    update_field('grado_allievi', $_POST['corsi'], 'user_'.$user_id);
    update_field('codice_fiscale', $cf, 'user_'.$user_id);
    update_field('indirizzo', sanitize_text_field($_POST['indirizzo']), 'user_'.$user_id);
    update_field('citta', sanitize_text_field($_POST['citta']), 'user_'.$user_id);
    update_field('cap', sanitize_text_field($_POST['cap']), 'user_'.$user_id);
    update_field('provincia', strtoupper(sanitize_text_field($_POST['provincia'])), 'user_'.$user_id);
    delete_transient('kunlun_invito_' . $token);
    wp_set_current_user($user_id); wp_set_auth_cookie($user_id);
    wp_send_json_success(['redirect'=>home_url('/dashboard-allievi')]);
}

add_action('wp_ajax_genera_link_invito', function() {
    if (!current_user_can('manage_options')) wp_die();
    $token = bin2hex(random_bytes(8));
    set_transient('kunlun_invito_' . $token, 'invito_valido', 24 * HOUR_IN_SECONDS);
    wp_send_json_success(['link' => home_url('/registrazione-allievi/?invito=' . $token)]);
});

add_filter('woocommerce_add_to_cart_validation', function($passed, $product_id) {
    $asd_ids = [607, 611, 612]; 
    $piva_ids = [136];          

    $is_added_piva = in_array($product_id, $piva_ids);
    $is_added_asd = in_array($product_id, $asd_ids);

    foreach (WC()->cart->get_cart() as $item) {
        $cart_product_id = $item['product_id'];
        $in_cart_piva = in_array($cart_product_id, $piva_ids);
        $in_cart_asd = in_array($cart_product_id, $asd_ids);

        if (($is_added_piva && $in_cart_asd) || ($is_added_asd && $in_cart_piva)) {
            wc_add_notice('I corsi dell\'Associazione (Kung-Fu/Taiji) e quelli P.IVA (Posturale) non possono stare nello stesso carrello. Fai due pagamenti separati.', 'error');
            return false;
        }
    }
    return $passed;
}, 10, 2);

add_filter('woocommerce_available_payment_gateways', function($available_gateways) {
    if (is_admin()) return $available_gateways; 
    
    $piva_ids = [136]; 
    $has_piva = false;
    
    if (WC()->cart) {
        foreach (WC()->cart->get_cart() as $item) {
            if (in_array($item['product_id'], $piva_ids)) {
                $has_piva = true;
                break;
            }
        }
    }
    
    if ($has_piva) {
        if(isset($available_gateways['bacs'])) unset($available_gateways['bacs']);
        if(isset($available_gateways['cod']))  unset($available_gateways['cod']);
    }
    
    return $available_gateways;
});
