<?php
/**
 * Widget Elementor: Form Foto Cordoglio
 *
 * Form per il caricamento delle foto cordoglio
 *
 * @package AnnunciFunebri
 * @since 4.8.0
 */

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

class ANNFU_Widget_Form_Foto_Cordoglio extends ANNFU_Widget_Base {

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

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

    public function get_icon() {
        return 'eicon-photo-library';
    }

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

    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' => 'Invia una foto alla famiglia',
                'placeholder' => 'Invia una foto alla famiglia',
            ]
        );

        $this->add_control(
            'descrizione',
            [
                'label' => __('Descrizione', 'annuncifunebri-onoranza'),
                'type' => \Elementor\Controls_Manager::WYSIWYG,
                'default' => 'La famiglia deciderà poi se renderla visibile su questa pagina.<br/><strong>Attenzione!</strong> Autenticazione richiesta. Inserisci un numero di cellulare per ricevere il link via <strong>WhatsApp</strong>.',
                'description' => __('Usa {nome} per inserire il nome del defunto', 'annuncifunebri-onoranza'),
            ]
        );

        $this->add_control(
            'testo_dropzone',
            [
                'label' => __('Testo Area Caricamento', 'annuncifunebri-onoranza'),
                'type' => \Elementor\Controls_Manager::TEXTAREA,
                'default' => 'Trascina nell\'area soprastante i file da caricare o clicca su un punto qualsiasi nell\'area colorata. Una volta caricato il file, sarà possibile inserire una didascalia per ogni foto. Max 10Mb per ogni foto',
                'description' => __('Istruzioni per il caricamento delle foto', '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-foto-titolo',
            ]
        );

        $this->add_control(
            'colore_titolo',
            [
                'label' => __('Colore Titolo', 'annuncifunebri-onoranza'),
                'type' => \Elementor\Controls_Manager::COLOR,
                'selectors' => [
                    '{{WRAPPER}} .annfu-form-foto-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-foto-descrizione',
            ]
        );

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

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

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

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

        $this->add_control(
            'colore_bordo_dropzone',
            [
                'label' => __('Colore Bordo Dropzone', 'annuncifunebri-onoranza'),
                'type' => \Elementor\Controls_Manager::COLOR,
                'selectors' => [
                    '{{WRAPPER}} .dropzone' => 'border-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-photo-library', __('Form Foto Condoglianze', 'annuncifunebri-onoranza'), __('Form caricamento foto 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' => ''); // Token vuoto se non disponibile
        }

        // Ottieni i valori personalizzabili
        $titolo = $settings['titolo'];
        $descrizione = $settings['descrizione'];
        $testo_dropzone = $settings['testo_dropzone'];
        $testo_pulsante = $settings['testo_pulsante'];

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

        ?>
        <div class="annfu_form_foto_cordoglio_wrapper">
            <?php if (!empty($titolo)): ?>
                <h4 id="annfu_titolo_form_foto_cordoglio" class="annfu-form-foto-titolo text-center"><?php echo esc_html($titolo); ?></h4>
            <?php endif; ?>

            <?php if (!empty($descrizione)): ?>
                <p class="annfu_paragrafo_form_foto_cordoglio annfu-form-foto-descrizione">
                    <?php echo wp_kses_post($descrizione ?? ''); ?>
                </p>
            <?php endif; ?>

            <div id="annfu_form_foto" class="annfu_form_cordoglio">
                <div id="annfu_foto_errori" class="annfu_error"></div>
                <form action="." method="post">
                    <span id="annfu_foto_slug" data-annuncio="<?php echo esc_attr($annuncio['slug']); ?>"></span>
                    <input type="hidden" name="token" value="<?php echo esc_attr($metaData['token']); ?>" id="annfu_foto_token"/>
                    <input type="hidden" name="hash" value="<?php echo esc_attr($annuncio['hash']); ?>" id="annfu_foto_hash"/>
                    <input type="hidden" name="files" value="" id="annfu_foto_files"/>
                    <div class="row">
                        <div class="col-12 col-md-6">
                            <div class="form-group">
                                <input type="text" name="nome" id="annfu_foto_nome" class="form-control controllato" placeholder="Nome e Cognome / Ragione Sociale"
                                       value="<?php echo isset($_COOKIE['cordoglio_nome']) ? esc_attr(sanitize_text_field(wp_unslash($_COOKIE['cordoglio_nome']))) : ''; ?>" required>
                            </div>
                        </div>
                        <div class="col-12 col-md-6">
                            <div class="form-group">
                                <input type="text" name="telefono" id="annfu_foto_telefono" class="form-control controllato"
                                       placeholder="Cellulare (obbligatorio, visibile solo alla famiglia)"
                                       value="<?php echo isset($_COOKIE['cordoglio_telefono']) ? esc_attr(sanitize_text_field(wp_unslash($_COOKIE['cordoglio_telefono']))) : ''; ?>" required>
                            </div>
                        </div>
                        <div class="col-12">
                            <div class="form-group">
                                <div id="annfu_foto_cordoglio" class="dropzone"></div>
                                <?php if (!empty($testo_dropzone)): ?>
                                    <div class="dz-didascalia">
                                        <small><?php echo esc_html($testo_dropzone); ?></small>
                                    </div>
                                <?php endif; ?>
                            </div>
                        </div>
                        <div class="col-12">
                            <div class="form-group">
                                <label class="annfu_label_privacy">
                                    <input type="checkbox" id="annfu_foto_dati_personali" class="annfu_dati_personali annfu_checkbox"/>
                                    Acconsento al 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_foto_invio" class="annfu_invio btn btn-default"
                                       title="Per poter inviare il cordoglio devi acconsentire al trattamento dei dati personali"/>
                            </div>
                        </div>
                    </div>
                    <div class="clearfix"></div>
                    <div id="annfu_foto_successo" class="annfu_success annfu_none"></div>
                </form>
            </div>
        </div>
        <?php
    }
}
