<h4>Elaborazione Business Case</h4>

<div class="spessore"></div>
<?php
$userId   = intval($_POST['id_utente']);
$surveyId = intval($_POST['id_item']);

// Valori default trial per ciascun factor_id
$default_values = [
    2  => 18,      // Turn-over (%)
    3  => 7.5,     // Assenteismo (giorni/FTE)
    4  => 200,     // Straordinari (€ annui)
    5  => 40,      // Stress/Burn-out (% dip.)
    6  => 50,      // Disimpegno (% dip.)
    7  => 3,       // Qualità del servizio (scala)
    8  => 3,       // Creatività (scala)
    9  => 3,       // Motivazione (scala)
    10 => 3,       // Attrattività (scala)
    21 => 2,       // Perdita di fatturato (% annuo)
    22 => 3,       // Perdita di produttività (% annuo)
    23 => 3        // Servizio clienti (scala +++)
];

/*
$delta = [
  2 => -0.41,
  3 => -0.53,
  4 => -0.30,
  5 => -0.68,
  6 => -0.56,
  7 => 0.15,
  8 => 0.20,
  9 => 0.25,
  10 => 0.20
];
*/
$delta = [];                      // sostituisce l'hard-coded

$sql = "SELECT factor_id, coeff_low
        FROM business_case_improvement_coeff";
foreach ($mydb->DoSelect($sql) as $row) {
    $delta[(int)$row['factor_id']] = (float)$row['coeff_low'];
}
#var_dump($_POST);
#var_dump($_SESSION['survey'][$userId]);
echo "<div class='spessore'></div>";
echo "<div class='spessore'></div>";

if(!isset($_SESSION['survey'][$userId]) || !isset($_SESSION['survey'][$userId]['srv_email'])) {
    echo "<div class='alert alert-danger'>La sessione è scaduta.</div>";
    echo "<div class='evidenza'>Clicca <a href=\"?sz=home\">qui per iniziare un nuovo questionario.</a></div>";
    exit;
}

$dipendenti = $_SESSION['survey'][$userId]['srv_numero_dipendenti'];
$costo_personale_annuo = $_SESSION['survey'][$userId]['srv_costo_personale_annuo'];
$fatturato_annuo = $_SESSION['survey'][$userId]['srv_fatturato_annuo'] ?? 0;
// Inizializza l'array dei fattori nella sessione se non esiste
if(!isset($_SESSION['survey'][$userId]['factor'])) {
    $_SESSION['survey'][$userId]['factor'] = [];
}
$kpi = [];
// Salva i dati dei fattori nella sessione
if(isset($_POST['factor']) && is_array($_POST['factor'])) {
    foreach ($_POST['factor'] as $factorId => $val) {
        $factorId = intval($factorId);
        ##$value = intval($value);
        #echo "<div class='evidenza'>Fattore $factorId: $val</div>";
        $val = trim($val);
        $value = ($val === '' || !is_numeric($val)) ? $default_values[$factorId] : floatval($val);
        $kpi[$factorId] = $value;
        
        // Salva il valore nella sessione
        $_SESSION['survey'][$userId]['factor'][$factorId] = $value;
        
        // Qui puoi inserire eventuale logica aggiuntiva di elaborazione
        /////
    }
}
$sql = "SELECT id FROM processing_queue WHERE id_survey_item = $id_item ";#AND status = 'PENDING'
$mydb->DoSelect($sql);

if (($row = $mydb->GetRow()) !== false) {
    $idq = $row['id'];
} else {

     $sql = "INSERT INTO processing_queue (id_survey_item, created_at) 
            VALUES ($id_item, NOW())";
    $mydb->ExecSql($sql);
    $idq = $mydb->LastInsertedId();
    if (!$idq) {
        echo "<div class='alert alert-danger'>Errore durante l'inserimento nella coda di elaborazione.</div>";
        exit;
    }
}

// Salvo le variabili per il JSON
$GLOBALS['id_item'] = $id_item;
$GLOBALS['idq'] = $idq;

$labels = getKpiLabels();

$table_rows = "";
#$chart_data = [["Fattore", "Attuale", "Smart Week"]];
$chart_data = [];
$valori_post = []; // Valori post Smart Week

// ①  Array per i grafici
#$econ_labels = $econ_att = $econ_sw = [];
#$qual_labels = $qual_att = $qual_sw = [];

foreach ($kpi as $fid => $val_att) {
    #echo "<div class='evidenza'>Fattore $fid: $val_att</div>";
    $delta_val = $delta[$fid] ?? 0;
    $val_post = round($val_att * (1 + $delta_val), 2);
    $valori_post[$fid] = $val_post; // Salva il valore post Smart Week
    $unit = $labels[$fid]['unit'] ?? '';
    $label = $labels[$fid]['label'] ?? "Fattore #$fid";

    if (strpos($unit, 'Scala') !== false) {
        #$val_att  = $val_att*4;
        #$val_post = $delta_val*4;
        continue; // Non elaboro le scale qualitativi qui
    }
    if($fid==21 )//perdita di fatturato
    {
        // $val_att è la % di perdita iniziale del fatturato
        // $delta_val è l'aumento % del fatturato con Smart Week
        // La nuova perdita % sarà ridotta dall'aumento del fatturato
        $val_post = round($val_att / (1 + $delta_val), 2);
    }      
    if($fid==22 )//perdita di produttività
    {
        // $val_att è la % di perdita iniziale di produttività
        // $delta_val è il miglioramento % della produttività con Smart Week
        // La nuova perdita % sarà ridotta dal miglioramento della produttività
        
        $val_post = round($val_att / (1 + $delta_val), 2);
    }       
    /*
    if (strpos($unit, 'Scala') !== false) {
        $att_descr = scala_valore($val_att);
        $post_descr = scala_valore($val_post);
        $miglioramento = "$post_descr (da $att_descr)";
        $impatto = "-";
        $val_att_txt = $att_descr;
        $val_post_txt = $post_descr;

            // 1a. mappa la scala + / +++++ in numero 1-5
        $att_num  = strlen(trim($val_att,'+'));
        $post_num = strlen(trim($val_post,'+'));
        $qual_labels[] = $label;
        $qual_att[]    = $att_num;
        $qual_sw[]     = $post_num;

    } else {
        $diff = round($val_post - $val_att, 2);
        $perc = $val_att != 0 ? round(($diff / $val_att) * 100, 1) : 0;
        $miglioramento = "$diff ({$perc}%)";
        $impatto_val = calcola_beneficio_economico($fid, $val_att, $val_post, $costo_personale_annuo, $dipendenti);
        $impatto = $impatto_val > 0 ? "€" . number_format($impatto_val, 0, ',', '.') : "-";
        $val_att_txt = $val_att;
        $val_post_txt = $val_post;

        $econ_labels[] = $label;
        $econ_att[]    = (float)$val_att;
        $econ_sw[]     = (float)$val_post;
    }
    */
    $chart_data[] = [$label, (float)$val_att, (float)$val_post];
}


$labels   = array_column($chart_data, 0);
$attuale  = array_column($chart_data, 1);
$smart    = array_column($chart_data, 2);

$att_norm = $smart_norm = [];

$max_global = max( max($attuale), max($smart) );   // es. 200



foreach ($attuale as $i => $val) {
    #echo $labels[$i] . ": " . $val . " / " . $smart[$i] . "<br>";
    #$att_norm[$i] = $max_global ? round($val  / $max_global * 100, 2) : 0;
    $att_norm[$i] = $val;#$max_global ? round($val  / $max_global * 100, 2) : 0;
   #$smart_norm[$i] = $max_global ? round($smart[$i] / $max_global * 100, 2) : 0;
    $smart_norm[$i] = $smart[$i]; // Non normalizzo, uso i valori originali
}

// Salvo i dati normalizzati per il JSON
$GLOBALS['att_norm'] = $att_norm;
$GLOBALS['smart_norm'] = $smart_norm;
/*
foreach ($attuale as $i => $val) {
    if ($val > 0) {
        $variazione_perc = (($smart[$i] - $val) / $val) * 100;
        // Per il radar chart, potresti usare il valore assoluto della variazione
        $att_norm[$i] = 100; // Valore base
        $smart_norm[$i] = 100 + $variazione_perc; // Valore con variazione
    }
}
*/

echo "<script>
   const radarLabels  = ".json_encode($labels).";
   const attValues    = ".json_encode($att_norm).";
   const swValues     = ".json_encode($smart_norm).";
</script>";

/*
// ②  normalizza ogni blocco sul proprio max
$max_global = max( max($econ_att), max($econ_sw) );  

function norm($a){
    global $max_global;
    $m = max($a) ?: 1;
    #$m = $max_global;
    return array_map(fn($v)=>round($v/$m*100,2),$a);
}
function normq($a){
    global $max_global;
    $m = max($a) ?: 1;

    return array_map(fn($v)=>round($v/$m*100,2),$a);
}

$econ_att_n = norm($econ_att);
$econ_sw_n  = norm($econ_sw);
$qual_att_n = normq($qual_att);
$qual_sw_n  = normq($qual_sw);

echo "<script>
 const econLabels = ".json_encode($econ_labels).";
 const econAtt    = ".json_encode($econ_att_n).";
 const econSw     = ".json_encode($econ_sw_n).";
 const qualLabels = ".json_encode($qual_labels).";
 const qualAtt    = ".json_encode($qual_att_n).";
 const qualSw     = ".json_encode($qual_sw_n).";
</script>";
*/

$params = [
  'dipendenti' => $dipendenti,
  'costo_personale_annuo' => $costo_personale_annuo,
  'costo_annuo_per_dip' => $costo_personale_annuo / $dipendenti,
  'fatturato_annuo' => $_SESSION['survey'][$userId]['srv_fatturato_annuo'] ?? 0,
  'utile_annuo' => $_SESSION['survey'][$userId]['srv_utile_annuo'] ?? 0
];

// $kpi = array factor_id => valore_attuale
// $valori_post = array factor_id => valore_smartweek (già calcolato con i delta)
#var_dump($valori_post);
echo "<div class='spessore'></div>";
echo genera_tabella_kpi_con_spiegazioni($kpi, $valori_post, $params);

// Costruisco il JSON completo con tutti i dati
$json_data = costruisci_json_completo($userId, $surveyId, $kpi, $valori_post, $params, $chart_data);


?>

<script>
function copyToClipboard() {
    const textarea = document.getElementById('jsonData');
    textarea.select();
    document.execCommand('copy');
    alert('JSON copiato negli appunti!');
}


</script>

<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js"></script>
<canvas id="kpiRadar" width="800" height="800" style="display:inline-table"></canvas>


<script>
document.addEventListener('DOMContentLoaded', () => {
  const ctx = document.getElementById('kpiRadar');

  new Chart(ctx, {
    type: 'radar',
    data: {
      labels: radarLabels,
      datasets: [{
        label: 'Attuale',
        data: attValues,
        fill: true,
        pointRadius: 3,
        backgroundColor: 'rgba(255, 99, 132, 0.2)',
        borderColor: 'rgba(255, 99, 132, 1)',
        borderWidth: 2,
        pointBackgroundColor: 'rgba(255, 99, 132, 1)',
        pointBorderColor: '#fff',
        pointBorderWidth: 2
      }, {
        label: 'Smart Week',
        data: swValues,
        fill: true,
        pointRadius: 3,
        backgroundColor: 'rgba(54, 162, 235, 0.2)',
        borderColor: 'rgba(54, 162, 235, 1)',
        borderWidth: 2,
        pointBackgroundColor: 'rgba(54, 162, 235, 1)',
        pointBorderColor: '#fff',
        pointBorderWidth: 2
      }]
    },
    options: {
      responsive: false,
      maintainAspectRatio: false,
      scales: {
        r: {
          beginAtZero: true,
          suggestedMax: Math.max(...attValues.concat(swValues)) //* 1.2
        }
      },
      plugins: {
        legend: { position: 'top' },
        tooltip: { callbacks: {
          label: ctx => `${ctx.dataset.label}: ${ctx.formattedValue}`
        }}
      }
    }
  });
});
</script>




<div id="elaboratingBusinessCase" class="alert alert-info">
    <h5>Elaborazione in corso...</h5>
    <p>Stiamo elaborando il tuo Business Case. Ti preghiamo di attendere.</p>
    <div class="loading">
        <img src="main/contents/immagini/loading3.gif" alt="Loading...">
    </div>
</div>
<div id ="elaboratedBusinessCase" class="alert alert-success" style="display: none;">
    <h5>Business Case elaborato con successo!</h5>
    <p>Grazie per aver completato il Business Case. I dati sono stati salvati correttamente.</p>
    
    <p>Puoi visualizzare i risultati nella sezione <a href="javascript:view_business_case()">Visualizza Business Case</a>.</p>
</div>
<script>

   // ajaxSrv('chkAnalizzaSurveyBC', 'id_survey_item=<?= $id_item ?>&id_queue=<?=$idq?>', 'analizzaSurveyBCDone(res)',  '');

    function analizzaSurveyBCDone(res) {
        console.log(res);
        const jsonResponse = JSON.parse(res);

        if (jsonResponse.success) {
            document.getElementById('elaboratingBusinessCase').style.display = 'none';
            document.getElementById('elaboratedBusinessCase').style.display = 'block';
        } else if (jsonResponse.error) {
            alert("Errore durante l'analisi del Business Case.");
        } else {
           setTimeout(function() {
                ajaxSrv('chkAnalizzaSurveyBC', 'id_survey_item=<?= $id_item ?>&id_queue=<?=$idq?>', 'analizzaSurveyBCDone(res)',  '');
            }, 2000);
        }
    }

    function view_business_case() {
        document.frm1.sz.value = 'surveys,3';
        waitpage();
        document.frm1.submit();
    }
</script>

<?php

function getKpiLabels(): array {
    global $mydb;

    $mydb->SetCharset('utf8');
  $a = $mydb->DoSelect("SELECT id, label, unit FROM business_case_factors WHERE is_active = 1 ORDER BY sort_order");
  $labels = [];
  foreach ($a as $row) {
    $labels[$row['id']] = [
      'label' => $row['label'],
      'unit' => $row['unit']
    ];
  }
  return $labels;
}

function scala_valore($v) {
    return str_repeat('+', round($v));
}

function calcola_beneficio_economico($fid, $val_att, $val_post, $costo_pers_annuo, $dipendenti) {
    if ($fid == 2) {
        $costo_sost = ($costo_pers_annuo / $dipendenti) * 0.6;
        return ($val_att - $val_post) / 100 * $dipendenti * $costo_sost;
    } elseif ($fid == 3) {
        $costo_giorno = $costo_pers_annuo / ($dipendenti * 220);
        return ($val_att - $val_post) * $dipendenti * $costo_giorno;
    } elseif ($fid == 4) {
        return ($val_att - $val_post) * $dipendenti * 12;
    } elseif ($fid == 5) {
        #echo "DIPENDENTI: $dipendenti, VAL_ATT: $val_att, VAL_POST: $val_post, COSTO_PERS_ANNUO: $costo_pers_annuo<br>";
        return ($val_att - $val_post) / 100 * $dipendenti * 600;
    } elseif ($fid == 6) {
        $costo_medio = $costo_pers_annuo / $dipendenti;
        return ($val_att - $val_post) / 100 * $dipendenti * $costo_medio * 0.34;
    }
    return 0;
}

function calcola_valore_lost(int $factor_id, float $val_att, float $val_post,array $params){
    global $mydb;

    $costo_per_dip = $params['costo_annuo_per_dip'];
    $costo_annuo_per_dip = $costo_per_dip;  
    $dipendenti = $params['dipendenti'];
    $fatturato_annuo = $params['fatturato_annuo'] ?? 0;
    $utile_annuo = $params['utile_annuo'] ?? 0;
    $ricavi_annui = $utile_annuo;
    $costo_personale_annuo = $params['costo_personale_annuo'] ?? 0;
    
    $lost = 0.0;
    // Recupera formula e metadati
    $sql = "SELECT formula_lost FROM business_case_formulae WHERE factor_id = $factor_id";
    $mydb->DoSelect($sql);
    $formula = $mydb->GetRow();

    if (!$formula) {
        return null;
    }

    $formula_code = $formula['formula_lost'];

    // Applica la formula solo se è presente
    if ($formula_code) {
        // Mappa variabili da usare nella formula
        $valore = null;
        try {
            eval('$valore = ' . $formula_code . ';');
        } catch (Throwable $e) {
            $valore = null;
            $spiegazione .= " [Errore nel calcolo: {$e->getMessage()}]";
        }
    } else {
        $valore = null;  // es. se è qualitativo
    }
    #echo $val_att." > ".$valore;


    return $valore;
}

function calcola_kpi_con_spiegazione(int $factor_id, float $val_att, float $val_post, array $params): array {
    global $mydb, $delta;
    
    // Parametri richiesti: costo_annuo_per_dip, dipendenti
    $costo_per_dip = $params['costo_annuo_per_dip'];
    $costo_annuo_per_dip = $costo_per_dip;  
    $dipendenti = $params['dipendenti'];
    $fatturato_annuo = $params['fatturato_annuo'] ?? 0;
    $utile_annuo = $params['utile_annuo'] ?? 0;
    $ricavi_annui = $utile_annuo;
    $costo_personale_annuo = $params['costo_personale_annuo'] ?? 0;
    $trial = $delta[$factor_id] ?? 0;

    #echo "$factor_id Trial = $trial <br>";

    // Recupera formula e metadati
    $sql = "SELECT formula_text, formula_code, source FROM business_case_formulae WHERE factor_id = $factor_id";
    $mydb->DoSelect($sql);
    $formula = $mydb->GetRow();

    if (!$formula) {
        return [
            'valore' => null,
            'spiegazione' => "Nessuna formula disponibile per questo KPI.",
            'fonte' => null
        ];
    }

    $spiegazione = $formula['formula_text'];
    $fonte = $formula['source'];
    $formula_code = $formula['formula_code'];

    // Applica la formula solo se è presente
    if ($formula_code) {
        // Mappa variabili da usare nella formula
        $valore = null;
        try {
            eval('$valore = ' . $formula_code . ';');
        } catch (Throwable $e) {
            $valore = null;
            $spiegazione .= " [Errore nel calcolo: {$e->getMessage()}]";
        }
    } else {
        $valore = null;  // es. se è qualitativo
    }

    // Costruzione spiegazione leggibile
    $dettaglio = "Formula: " . $formula['formula_text'] . "\n";
    $dettaglio .= "Valori applicati: attuale = $val_att, post = $val_post, dipendenti = $dipendenti, costo medio = €" . number_format($costo_per_dip, 0, ',', '.') . "\n";
    $dettaglio .= $fonte ? "Fonte: $fonte" : "";

    return [
        'valore' => $valore,
        'spiegazione' => $dettaglio,
        'fonte' => $fonte
    ];
}

function genera_tabella_kpi_con_spiegazioni(array $kpi, array $valori_post, array $params): string {

    global $mydb, $delta;

    $html = '<table class="tablegrid tablegrid3"><thead>
        <tr><th>Fattore</th>
        <th style="background:darkorange">Attuale<br>(Dati di Input)</th>
        <th style="background:darkorange">Valore perso</th>
        <th>Smart Week<br>(Dati di Input trial)</th>
        <th>Potenziale Beneficio</th>
        <th>Note</th></tr></thead><tbody>';

    $totale_perso = 0;
    $totale_beneficio = 0;

    foreach ($kpi as $fid => $val_att) {
        $val_post = $valori_post[$fid] ?? $val_att;
        $trial = $delta[$fid] ?? 0;

        // Etichetta
        $sql = "SELECT label, unit, help_text FROM business_case_factors WHERE id = $fid ";
        $mydb->DoSelect($sql);
        $r = $mydb->GetRow();
        $label = $r['label'] ?: "Fattore #$fid";
        $unit   = $r['unit']  ?: '';
        $help_text = $r['help_text'] ?: '';
        $delta_var = "";
        if (strpos($unit, 'Scala') !== false) {          // KPI qualitativo
            $att_descr  = scala_valore($val_att);
            $post_descr = scala_valore($delta[$fid]);
            $miglioramento = "$post_descr (da $att_descr)";
            $val_att   = $att_descr;
            #$val_post_txt  = $post_descr;
            $strsw = "-";
            $val_lost = "-";
            $unit = '';
            
        } else {       
                // Calcolo e spiegazione
                $val_lost_ = calcola_valore_lost($fid, $val_att, $val_post,$params);
                $val_lost = $val_lost_ !== null ? number_format($val_lost_, 2, ',', '.') . " €" : "-";
                $ris = calcola_kpi_con_spiegazione($fid, $val_att, $val_post, $params);
                $miglioramento = $ris['valore'] !== null ? 
                    number_format(abs($ris['valore']), 2, ',', '.') . " €" : "-";
                if($unit == '%'){
                $dperc = $delta[$fid]*100;
                $delta_var = "(". $dperc ."$unit)";
                }
                $strsw = $val_post." ".$unit." $delta_var";
                if($fid==21 || $fid==22)//perdita di fatturato o produttività
                {
                 #$strsw = "+ $dperc $unit Fatturato";
                 $strsw =  round($val_att / (1 + $trial), 2)." ".$unit;
                }
                #{
                #  $strsw = $delta[$fid]*100 ."%";
                #}
                $totale_perso += $val_lost_;
                $totale_beneficio += abs($ris['valore']) ?? 0;

        }
        $html .= "<tr>
            <td>{$label}</td>
            <td style='white-space: nowrap;'>{$val_att} {$unit}</td>
            <td style='white-space: nowrap;'>{$val_lost}</td>
            <td style='white-space: nowrap;'>{$strsw}</td>
            <td style='white-space: nowrap;'>{$miglioramento}</td>
            <td><pre style='white-space:pre-wrap;font-size:smaller'>{$help_text}</pre></td>
        </tr>";
    }

    $totale_perso = number_format($totale_perso, 2, ',', '.');
    $totale_beneficio = number_format($totale_beneficio, 2, ',', '.');


    $html .= "<tr>
            <td><b>VALORI TOTALI</b></td>
            <td></td>
            <td style='white-space: nowrap;color:darkorange'><b>{$totale_perso} €</b></td>
            <td></td>
            <td style='white-space: nowrap;color:green'><b>{$totale_beneficio} €</b></td>
            <td></td>
        </tr>";

    $html .= "</tbody></table>";
    return $html;
}

function costruisci_json_completo($userId, $surveyId, $kpi, $valori_post, $params, $chart_data) {
    global $mydb, $delta, $default_values;
    
    // Raccolgo tutti i dati dalla sessione survey
    $survey_data = $_SESSION['survey'][$userId] ?? [];
    
    // Raccolgo i dati dei fattori con le loro informazioni complete
    $factors_data = [];
    foreach ($kpi as $fid => $val_att) {
        $val_post = $valori_post[$fid] ?? $val_att;
        
        // Recupero informazioni del fattore dal database
        $sql = "SELECT id, label, unit, help_text, category FROM business_case_factors WHERE id = $fid";
        $mydb->DoSelect($sql);
        $factor_info = $mydb->GetRow();
        
        // Calcolo valori economici
        $val_lost = calcola_valore_lost($fid, $val_att, $val_post, $params);
        $beneficio_info = calcola_kpi_con_spiegazione($fid, $val_att, $val_post, $params);
        
        $is_qualitative = strpos($factor_info['unit'] ?? '', 'Scala') !== false;
        
        $factors_data[$fid] = [
            'id' => $fid,
            'label' => $factor_info['label'] ?? "Fattore #$fid",
            'unit' => $factor_info['unit'] ?? '',
            'category' => $factor_info['category'] ?? '',
            'help_text' => $factor_info['help_text'] ?? '',
            'is_qualitative' => $is_qualitative,
            'default_value' => $default_values[$fid] ?? null,
            'delta_coefficient' => $delta[$fid] ?? 0,
            'valore_attuale' => $val_att,
            'valore_smart_week' => $val_post,
            'valore_perso_euro' => $is_qualitative ? null : $val_lost,
            'beneficio_euro' => $is_qualitative ? null : $beneficio_info['valore'],
            'beneficio_spiegazione' => $beneficio_info['spiegazione'] ?? '',
            'beneficio_fonte' => $beneficio_info['fonte'] ?? ''
        ];
    }
    
    // Calcolo totali
    $totale_perso = 0;
    $totale_beneficio = 0;
    foreach ($factors_data as $factor) {
        if (!$factor['is_qualitative']) {
            $totale_perso += $factor['valore_perso_euro'] ?? 0;
            $totale_beneficio += abs($factor['beneficio_euro'] ?? 0);
        }
    }
    
    // Raccolgo i dati del radar chart
    $radar_data = [
        'labels' => array_column($chart_data, 0),
        'attuale' => array_column($chart_data, 1),
        'smart_week' => array_column($chart_data, 2),
        'attuale_normalizzato' => array_values($GLOBALS['att_norm'] ?? []),
        'smart_week_normalizzato' => array_values($GLOBALS['smart_norm'] ?? [])
    ];
    
    // Costruisco il JSON finale
    $json_complete = [
        'timestamp' => date('Y-m-d H:i:s'),
        'user_id' => $userId,
        'survey_id' => $surveyId,
        'survey_session_data' => $survey_data,
        'company_parameters' => $params,
        'business_case_factors' => $factors_data,
        'totals' => [
            'totale_valore_perso_euro' => $totale_perso,
            'totale_beneficio_euro' => $totale_beneficio,
            'roi_potenziale_percent' => $params['costo_personale_annuo'] > 0 ? 
                round(($totale_beneficio / $params['costo_personale_annuo']) * 100, 2) : 0
        ],
        'chart_data' => [
            'radar' => $radar_data,
            'raw_data' => $chart_data
        ],
        'metadata' => [
            'default_values_used' => $default_values,
            'delta_coefficients' => $delta,
            'processing_info' => [
                'id_queue' => $GLOBALS['idq'] ?? null,
                'id_survey_item' => $GLOBALS['id_item'] ?? null
            ]
        ]
    ];
    
    return $json_complete;
}


?><textarea id="jsonData" style="width:100%;height:300px;overflow-y:auto;display:none;"><?php
    echo json_encode($json_data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
?></textarea>

