// ⚠️ Aggiungo il menu amministrativo per la gestione delle iscrizioni
function menu_gestione_iscrizioni() {
    add_menu_page(
        'Gestione Iscrizioni',  // Titolo della pagina
        'Gestione Iscrizioni',  // Nome nel menu
        'manage_options',       // Permessi richiesti
        'gestione-iscrizioni',  // Slug della pagina
        'visualizza_iscrizioni_forminator', // Funzione per mostrare la pagina
        'dashicons-list-view',  // Icona del menu
        25                      // Posizione del menu
    );

    add_submenu_page(
        'gestione-iscrizioni',
        'Modifica Iscrizione',
        'Modifica Iscrizione',
        'manage_options',
        'modifica-iscrizione',
        'pagina_modifica_iscrizione'
    );
}
add_action('admin_menu', 'menu_gestione_iscrizioni');

// ⚠️ Visualizzo le iscrizioni salvate in Forminator
function visualizza_iscrizioni_forminator() {
    global $wpdb;
    $form_id = 808; // ⚠️ Modifica con l'ID del tuo modulo Forminator

    $entries = $wpdb->get_results("SELECT entry_id FROM {$wpdb->prefix}frmt_form_entry WHERE form_id = $form_id ORDER BY entry_id DESC");

    echo "<h2>Gestione Iscrizioni</h2>";
    echo "<table class='widefat fixed' cellspacing='0'><thead>
         <tr>
            <th>Nome</th>
            <th>Cognome</th>
            <th>Data di Nascita</th>
            <th>Genere</th>
            <th>Email</th>
			<th>Telefono</th>
            <th>Corso</th>
            <th>Data</th>
			<th>Indirizzo</th>
			<th>CAP</th>
			<th>Località</th>
            <th>Azioni</th>
         </tr>
        </thead>
       <tbody>";

    foreach ($entries as $entry) {
        $meta_data = $wpdb->get_results("SELECT meta_key, meta_value FROM {$wpdb->prefix}frmt_form_entry_meta WHERE entry_id = {$entry->entry_id}");
        $data = [];
        foreach ($meta_data as $meta) {
            $data[$meta->meta_key] = maybe_unserialize($meta->meta_value);
        }

        $nome = esc_html($data['text-1'] ?? 'N/D');
        $cognome = esc_html($data['text-2'] ?? 'N/D');
        $data_nascita = esc_html($data['date-1'] ?? 'N/D');
        $genere = esc_html($data['select-1'] ?? 'N/D');
        $email = esc_html($data['email-1'] ?? 'N/D');
		$telefono = esc_html($data['phone-1'] ?? 'N/D');
        $corso = esc_html($data['radio-1'] ?? 'N/D');
        $data_corso = esc_html($data['radio-2'] ?? 'N/D');
		$indirizzo = esc_html($data['text-3'] ?? 'N/D');
		$cap = esc_html($data['text-4'] ?? 'N/D');
		$localita = esc_html($data['text-5'] ?? 'N/D');

        echo "<tr>
                <td>$nome</td>
                <td>$cognome</td>
                <td>$data_nascita</td>
                <td>$genere</td>
                <td>$email</td>
				<td>$telefono</td>
                <td>$corso</td>
                <td>$data_corso</td>
				<td>$indirizzo</td>
				<td>$cap</td>
				<td>$localita</td>
                <td><a href='admin.php?page=modifica-iscrizione&entry_id={$entry->entry_id}'>Modifica</a></td>
              </tr>";
    }

    echo "</tbody></table>";
}

// ⚠️ Modifico le iscrizioni in Forminator
function pagina_modifica_iscrizione() {
    global $wpdb;

    if (!isset($_GET['entry_id'])) {
        echo "<p>Errore: nessuna iscrizione selezionata.</p>";
        return;
    }

    $entry_id = intval($_GET['entry_id']);

    // ⚠️ Recupera i dati PRIMA della modifica
    $campi = ['text-1', 'text-2', 'text-3', 'text-4', 'text-5', 'text-6', 'text-7', 'date-1', 'select-1', 'select-2', 'select-4', 'select-5', 'email-1', 'phone-1', 'radio-1', 'radio-2', 'radio-3'];
    $dati_prima_modifica = [];

    foreach ($campi as $campo) {
        $dati_prima_modifica[$campo] = esc_html($wpdb->get_var("SELECT meta_value FROM {$wpdb->prefix}frmt_form_entry_meta WHERE entry_id = $entry_id AND meta_key = '$campo'")) ?? 'N/D';
    }

    // Convertire la data per il campo input "date"
    $data_nascita_raw = $dati_prima_modifica['date-1'];
    $data_nascita = ($data_nascita_raw != 'N/D') ? date("Y-m-d", strtotime(str_replace("/", "-", $data_nascita_raw))) : '';

    // Opzioni per il campo "Genere"
    $opzioni_genere = ['Maschile', 'Femminile', 'Altro'];

    // Form di modifica
    echo "<h2>Modifica Iscrizione</h2>
          <form method='POST'>
          <input type='hidden' name='entry_id' value='$entry_id'>
          <label>Nome:</label>
          <input type='text' name='nome' value='{$dati_prima_modifica['text-1']}' required />
          <label>Cognome:</label>
          <input type='text' name='cognome' value='{$dati_prima_modifica['text-2']}' required />
          <label>Data di Nascita:</label>
          <input type='date' name='data_nascita' value='$data_nascita' required />
          <label>Genere:</label>
          <select name='genere'>";
    foreach ($opzioni_genere as $opzione) {
        $selected = ($dati_prima_modifica['select-1'] == $opzione) ? "selected" : "";
        echo "<option value='$opzione' $selected>$opzione</option>";
    }
    echo "</select>
          <label>Email:</label>
          <input type='email' name='email' value='{$dati_prima_modifica['email-1']}' required />
		  <label>Telefono:</label>
          <input type='tel' name='telefono' value='{$dati_prima_modifica['phone-1']}' required />
          <br>
		  <label>Corso:</label>
          <input type='text' name='corso' value='{$dati_prima_modifica['radio-1']}' required />
          <label>Data del Corso:</label>
          <input type='text' name='data_corso' value='{$dati_prima_modifica['radio-2']}' required />
		  <br>
		  <label>Indirizzo:</label>
          <input type='text' name='indirizzo' value='{$dati_prima_modifica['text-3']}' required />
		  <label>CAP:</label>
          <input type='text' name='cap' value='{$dati_prima_modifica['text-4']}' required />
		  <label>Località:</label>
          <input type='text' name='localita' value='{$dati_prima_modifica['text-5']}' required />
		  <br><br>
          <input type='submit' name='salva' value='Salva Modifiche' />
          </form>";

    // ⚠️ Salvataggio dati
    if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['salva'])) {
	
		$nuova_data_nascita = (!empty($_POST['data_nascita'])) ? date("d/m/Y", strtotime($_POST['data_nascita'])) : '';

        $valori_nuovi = [
            'text-1' => sanitize_text_field($_POST['nome']),
            'text-2' => sanitize_text_field($_POST['cognome']),
			'date-1' => $nuova_data_nascita,
            'select-1' => sanitize_text_field($_POST['genere']),
            'email-1' => sanitize_email($_POST['email']),
			'phone-1' => sanitize_text_field($_POST['telefono']),
            'radio-1' => sanitize_text_field($_POST['corso']),
            'radio-2' => sanitize_text_field($_POST['data_corso']),
			'text-3' => sanitize_text_field($_POST['indirizzo']),
			'text-4' => sanitize_text_field($_POST['cap']),
			'text-5' => sanitize_text_field($_POST['localita'])
        ];

        foreach ($valori_nuovi as $meta_key => $meta_value) {
            $exists = $wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}frmt_form_entry_meta WHERE entry_id = $entry_id AND meta_key = '$meta_key'");

            if ($exists) {
                $wpdb->update("{$wpdb->prefix}frmt_form_entry_meta", ['meta_value' => $meta_value], ['entry_id' => $entry_id, 'meta_key' => $meta_key]);
            } else {
                $wpdb->insert("{$wpdb->prefix}frmt_form_entry_meta", [
                    'entry_id' => $entry_id,
                    'meta_key' => $meta_key,
                    'meta_value' => $meta_value
                ]);
            }
        }

        // ⚠️ Recupera i dati DOPO la modifica
        $dati_dopo_modifica = [];
        foreach ($campi as $campo) {
            $dati_dopo_modifica[$campo] = esc_html($wpdb->get_var("SELECT meta_value FROM {$wpdb->prefix}frmt_form_entry_meta WHERE entry_id = $entry_id AND meta_key = '$campo'")) ?? 'N/D';
        }

		// ⚠️ Mappa dei campi con nomi leggibili
		$etichette_campi = [
		    'text-1' => 'Nome',
		    'text-2' => 'Cognome',
			'date-1' => 'Data_nascita',
            'select-1' => 'Genere',
			'select-2' => 'Voglio diventare socio',
			'select-4' => 'Consenso al trattamento dei dati',
			'select-5' => "Desidero ricevere comunicazioni relative all'attività dell'associazione DiverTiAmo",
		    'email-1' => 'Email',
			'phone-1' => 'Telefono',
		    'radio-1' => 'Corso',
		    'radio-2' => 'Data del Corso',
			'radio-3' => 'Tassa societaria',
			'text-3' => 'Indirizzo',
			'text-4' => 'CAP',
			'text-5' => 'Località',
			'text-6' => 'Nome e cognome della persona iscritta (se maggiorenne)',
			'text-7' => 'Nome del genitore/tutore legale (se minorenne)'
		];

		// 📩 EMAIL di aggiornamento con elenco puntato
		$headers = [
    		'Content-Type: text/html; charset=UTF-8',
    		'From: DiverTiAmo <info@divertiamo.ch>',
		];

		$messaggio_email = "<p>Ciao {$dati_dopo_modifica['text-1']} {$dati_dopo_modifica['text-2']},</p>";
		$messaggio_email .= "<p>La tua iscrizione è stata aggiornata.<br><strong>In grassetto i valori che sono stati aggiornati.</strong></p>";

		$messaggio_email .= "<p>🔹 <u>Prima della modifica:</u></p><ul>";
		foreach ($campi as $campo) {
		    $etichetta = $etichette_campi[$campo] ?? $campo;
		    $messaggio_email .= "<li>$etichetta: " . $dati_prima_modifica[$campo] . "</li>";
		}
		$messaggio_email .= "</ul>";

		$messaggio_email .= "<p>🔹 <u>Dopo la modifica:</u></p><ul>";
		foreach ($campi as $campo) {
		    $etichetta = $etichette_campi[$campo] ?? $campo;
		    $valore_prima = $dati_prima_modifica[$campo];
		    $valore_dopo = $dati_dopo_modifica[$campo];

		    if ($valore_prima !== $valore_dopo) {
        		$messaggio_email .= "<li><strong>$etichetta:</strong> <strong>$valore_dopo</strong></li>";
		    } else {
        		$messaggio_email .= "<li>$etichetta: $valore_dopo</li>";
    		}
		}
		$messaggio_email .= "</ul>";

		wp_mail($valori_nuovi['email-1'], "Aggiornamento Iscrizione DiverTiAmo", $messaggio_email, $headers);
		
		// E-mail di conferma a info@divertiamo.ch
		$messaggio_cc = "<p>Iscrizione di {$dati_dopo_modifica['text-1']} {$dati_dopo_modifica['text-2']} - {$dati_dopo_modifica['radio-1']} è stata aggiornata.<br><strong>In grassetto i valori che sono stati aggiornati.</strong></p>";
		
		$messaggio_cc .= "<p>🔹 <u>Prima della modifica:</u></p><ul>";
		foreach ($campi as $campo) {
		    $etichetta = $etichette_campi[$campo] ?? $campo;
		    $messaggio_cc .= "<li>$etichetta: " . $dati_prima_modifica[$campo] . "</li>";
		}
		$messaggio_cc .= "</ul>";

		$messaggio_cc .= "<p>🔹 <u>Dopo la modifica:</u></p><ul>";
		foreach ($campi as $campo) {
		    $etichetta = $etichette_campi[$campo] ?? $campo;
		    $valore_prima = $dati_prima_modifica[$campo];
		    $valore_dopo = $dati_dopo_modifica[$campo];

		    if ($valore_prima !== $valore_dopo) {
        		$messaggio_cc .= "<li><strong>$etichetta:</strong> <strong>$valore_dopo</strong></li>";
		    } else {
        		$messaggio_cc .= "<li>$etichetta: $valore_dopo</li>";
    		}
		}
		$messaggio_cc .= "</ul>";
		
		wp_mail('Modifica iscrizione - DiverTiAmo <info@divertiamo.ch>', "Aggiornamento Iscrizione DiverTiAmo", $messaggio_cc, $headers);

        echo "<p><strong>Email inviata con i dati aggiornati evidenziati in grassetto!</strong></p>";
        echo "<script>window.location.href = window.location.href;</script>";
    }
}