<?php
/**
 * Widget Elementor: Form Cordoglio
 *
 * Form per l'inserimento delle condoglianze
 *
 * @package AnnunciFunebri
 * @since 4.8.0
 */

if (!defined('ABSPATH')) exit;

class ANNFU_Widget_Form_Cordoglio extends ANNFU_Widget_Base {

    public function get_name() {
        return 'annfu_form_cordoglio';
    }

    public function get_title() {
        return __('Form Condoglianze', 'annuncifunebri-onoranza');
    }

    public function get_icon() {
        return 'eicon-form-horizontal';
    }

    protected function ha_dati_widget() {
        // Il form è sempre disponibile
        return true;
    }

    /**
     * Ottiene il percorso del template form cordogli
     * Cerca prima nel template personalizzato, poi fallback al default
     *
     * @return string Percorso completo del file template
     */
    private function ottieni_percorso_template_form() {
        $template = get_option('annfu_template', 'default');
        $nome_file = '_partecipazioni-cordogli-form.php';

        // Prova prima con il template personalizzato
        $percorso_personalizzato = ANNFU_PLUGIN_PATH . 'templates/' . $template . '/' . $nome_file;
        if (file_exists($percorso_personalizzato)) {
            return $percorso_personalizzato;
        }

        // Fallback al template default
        return ANNFU_PLUGIN_PATH_TEMPLATE_DEFAULT . $nome_file;
    }

    protected function register_controls() {
        // === TAB CONTENT ===
        $this->start_controls_section(
            'sezione_contenuto',
            [
                'label' => __('Contenuto', 'annuncifunebri-onoranza'),
                'tab' => \Elementor\Controls_Manager::TAB_CONTENT,
            ]
        );

        $this->add_control(
            'titolo',
            [
                'label' => __('Titolo', 'annuncifunebri-onoranza'),
                'type' => \Elementor\Controls_Manager::TEXT,
                'default' => 'Lascia il tuo messaggio di cordoglio alla famiglia',
                'placeholder' => 'Lascia il tuo messaggio di cordoglio alla famiglia',
            ]
        );

        $this->add_control(
            'descrizione',
            [
                'label' => __('Descrizione', 'annuncifunebri-onoranza'),
                'type' => \Elementor\Controls_Manager::WYSIWYG,
                'default' => '<span class="annfu_cordoglio_gratis">Lascia <strong>gratuitamente</strong> un messaggio di cordoglio, sarà nostra cura consegnarlo ai congiunti.<br/></span><span class="annfu_cordsogli_stampati">Tutti i pensieri verranno anche <strong>stampati e consegnati ai congiunti</strong> in ricordo.</span>',
                'description' => __('Usa {nome} per inserire il nome del defunto', 'annuncifunebri-onoranza'),
            ]
        );

        $this->add_control(
            'testo_pulsante',
            [
                'label' => __('Testo Pulsante', 'annuncifunebri-onoranza'),
                'type' => \Elementor\Controls_Manager::TEXT,
                'default' => 'Invia',
                'placeholder' => 'Invia',
            ]
        );

        $this->end_controls_section();

        // === TAB STYLE ===
        $this->start_controls_section(
            'sezione_stile',
            [
                'label' => __('Stile', 'annuncifunebri-onoranza'),
                'tab' => \Elementor\Controls_Manager::TAB_STYLE,
            ]
        );

        $this->add_group_control(
            \Elementor\Group_Control_Typography::get_type(),
            [
                'name' => 'tipografia_titolo',
                'label' => __('Tipografia Titolo', 'annuncifunebri-onoranza'),
                'selector' => '{{WRAPPER}} .annfu-form-cordoglio-titolo',
            ]
        );

        $this->add_control(
            'colore_titolo',
            [
                'label' => __('Colore Titolo', 'annuncifunebri-onoranza'),
                'type' => \Elementor\Controls_Manager::COLOR,
                'selectors' => [
                    '{{WRAPPER}} .annfu-form-cordoglio-titolo' => 'color: {{VALUE}};',
                ],
            ]
        );

        $this->add_group_control(
            \Elementor\Group_Control_Typography::get_type(),
            [
                'name' => 'tipografia_descrizione',
                'label' => __('Tipografia Descrizione', 'annuncifunebri-onoranza'),
                'selector' => '{{WRAPPER}} .annfu-form-cordoglio-descrizione',
            ]
        );

        $this->add_control(
            'colore_descrizione',
            [
                'label' => __('Colore Descrizione', 'annuncifunebri-onoranza'),
                'type' => \Elementor\Controls_Manager::COLOR,
                'selectors' => [
                    '{{WRAPPER}} .annfu-form-cordoglio-descrizione' => 'color: {{VALUE}};',
                ],
            ]
        );

        $this->add_control(
            'colore_pulsante',
            [
                'label' => __('Colore Pulsante', 'annuncifunebri-onoranza'),
                'type' => \Elementor\Controls_Manager::COLOR,
                'selectors' => [
                    '{{WRAPPER}} .annfu_invio' => 'color: {{VALUE}};',
                ],
            ]
        );

        $this->add_control(
            'colore_sfondo_pulsante',
            [
                'label' => __('Colore Sfondo Pulsante', 'annuncifunebri-onoranza'),
                'type' => \Elementor\Controls_Manager::COLOR,
                'selectors' => [
                    '{{WRAPPER}} .annfu_invio' => 'background-color: {{VALUE}};',
                ],
            ]
        );

        $this->end_controls_section();
    }

    protected function render() {
        $dati = $this->ottieni_dati_annuncio();
        $settings = $this->get_settings_for_display();

        if (\Elementor\Plugin::$instance->editor->is_edit_mode() && empty($dati)) {
            $this->render_placeholder_editor('eicon-form-horizontal', __('Form Condoglianze', 'annuncifunebri-onoranza'), __('Form inserimento cordoglio', 'annuncifunebri-onoranza'));
            return;
        }

        // Se non ci sono dati, non renderizza nulla
        if (empty($dati) || !is_array($dati)) {
            return;
        }

        // Prepara le variabili per il template
        if (array_key_exists('metaData', $dati)) {
            $metaData = $dati['metaData'];
            $annuncio = $dati['data'];
        } else {
            $annuncio = $dati;
            $metaData = array('token' => '');
        }

        // Ottieni i valori personalizzabili
        $titolo = !empty($settings['titolo']) ? $settings['titolo'] : 'Lascia il tuo messaggio di cordoglio alla famiglia';
        $descrizione = !empty($settings['descrizione']) ? $settings['descrizione'] : '<span class="annfu_cordoglio_gratis">Lascia <strong>gratuitamente</strong> un messaggio di cordoglio, sarà nostra cura consegnarlo ai congiunti.<br/></span><span class="annfu_cordsogli_stampati">Tutti i pensieri verranno anche <strong>stampati e consegnati ai congiunti</strong> in ricordo.</span>';
        $testo_pulsante = !empty($settings['testo_pulsante']) ? $settings['testo_pulsante'] : 'Invia';

        // Sostituisci {nome} con il nome del defunto
        $nome_visualizzato = !empty($annuncio['nomeVisualizzato']) ? $annuncio['nomeVisualizzato'] : '';
        $descrizione = str_replace('{nome}', $nome_visualizzato, $descrizione);

        ?>
        <div class="annfu_form_cordoglio_wrapper">
            <h4 class="annfu-form-cordoglio-titolo"><?php echo esc_html($titolo); ?></h4>
            <div class="annfu-form-cordoglio-descrizione">
                <?php echo wp_kses_post($descrizione ?? ''); ?>
            </div>
            <p>Se non sai cosa scrivere, o non trovi le parole adatte, clicca solo sul pulsante invia e verrà inviato gratuitamente un avviso alla famiglia. Altrimenti <a class="annfu_testi annfu_pointer">clicca qui</a> e troverai una lista di testi da cui prendere spunto.</p>
            <div id="annfu_form_cordoglio">
                <div id="annfu_errori" class="annfu_error"></div>
                <form action="." method="post">
                    <input type="hidden" name="token" value="<?php echo esc_attr($metaData['token']); ?>" id="annfu_token"/>
                    <input type="hidden" name="hash" value="<?php echo esc_attr($annuncio['hash']); ?>" id="annfu_hash"/>
                    <div class="row">
                        <div class="col-12">
                            <div class="form-group annfu_nome_wrapper">
                                <input type="text" name="nome" id="annfu_nome" class="form-control controllato" required placeholder="Nome e Cognome / Ragione Sociale">
                            </div>
                        </div>
                        <div class="col-12 col-md-6">
                            <div class="form-group annfu_mail_wrapper">
                                <input type="text" name="mail" id="annfu_mail" class="form-control controllato" placeholder="Email (consigliato e visibile solo alla famiglia)">
                            </div>
                        </div>
                        <div class="col-12 col-md-6">
                            <div class="form-group annfu_telefono_wrapper">
                                <input type="text" name="telefono" id="annfu_telefono" class="form-control controllato" required placeholder="Cellulare (visibile solo alla famiglia)">
                            </div>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-12">
                            <div class="form-group annfu_testo_wrapper">
                                <textarea name="testo" id="annfu_testo" class="form-control controllato" placeholder="Testo"></textarea>
                            </div>
                        </div>
                        <div class="col-12">
                            <?php if (!empty($annuncio['nascondiCordogli']) && $annuncio['nascondiCordogli'] == 1): ?>
                                <input type="hidden" name="visibile" value="1"/>
                            <?php else: ?>
                                <div class="form-group annfu_visibile_wrapper">
                                    <label><input type="checkbox" name="visibile" value="1" id="annfu_visibile" class="annfu_checkbox"/> Desidero che il cordoglio sia visibile solo alla famiglia</label>
                                </div>
                            <?php endif; ?>
                        </div>
                        <div class="col-12">
                            <div class="form-group annfu_recapito_wrapper">
                                <span class="annfu_facoltativo">Facoltativo: Un recapito per permettere alla famiglia di inviare un eventuale ringraziamento. (Questo dato non sarà reso pubblico, ma verrà comunicato solo alla famiglia)<br/></span>
                                <input type="text" name="recapito" id="annfu_recapito" class="form-control controllato" placeholder="Es.: via Verdi 90, Milano (facoltativo)">
                            </div>
                        </div>
                        <div class="col-12">
                            <div class="form-group annfu_privacy_wrapper">
                                <label class="annfu_label_privacy">
                                    <input type="checkbox" class="annfu_dati_personali annfu_checkbox"/>
                                    Dichiaro di aver preso visione e compreso l'informativa sul trattamento dei miei dati personali (<a class="annfu_privacy annfu_pointer">clicca qui per maggiori dettagli</a>).
                                </label>
                            </div>
                        </div>
                        <div class="col-12">
                            <div class="form-group">
                                <input type="submit" name="invio" value="<?php echo esc_attr($testo_pulsante); ?>" id="annfu_invio" class="annfu_invio btn btn-default"/>
                            </div>
                        </div>
                    </div>

                    <div class="clearfix"></div>
                    <div id="annfu_successo" class="annfu_success annfu_none"></div>
                </form>
            </div>
        </div>
        <template id="annfu_grazie">
            <div class="annfu_grazie">
                <h4>Grazie per aver utilizzato il servizio</h4>
                <p>Il tuo messaggio verrà stampato e consegnato alla famiglia di <?php echo esc_html($nome_visualizzato); ?>.</p>
                <?php if (empty($annuncio['nascondiCordogli']) || $annuncio['nascondiCordogli'] == 0): ?>
                    <p>Se non lo vedi comparire subito, non preoccuparti, ci stiamo lavorando; <strong>verrà pubblicato al più presto</strong>.</p>
                <?php endif; ?>
                <p>Se vuoi scrivere un altro cordoglio, <a href="<?php echo esc_url(get_site_url() . '/' . ANNFU_PAGE_ANNUNCIO . '/' . $annuncio['comune']['slug'] . '/' . $annuncio['slug']); ?>">clicca qui per inserirlo</a>.</p>
            </div>
        </template>
        <?php
    }
}
