/*
Theme Name: 04-Tema-Proposta-Automatica2
Theme URI: https://propostaautomatica.com
Description: Tema filho para Proposta Automática baseado em Hello Elementor
Author: Seu Nome
Author URI: https://seusite.com
Template: hello-elementor
Version: 1.0.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: proposta-automatica
*/

/* 
=================================================
   IMPORTANTE: Este é um tema filho (child theme)
   Tema pai: Hello Elementor
=================================================

<?php
// Exit if accessed directly
if ( !defined( 'ABSPATH' ) ) exit;

// BEGIN ENQUEUE PARENT ACTION
// AUTO GENERATED - Do not modify or remove comment markers above or below:

if ( !function_exists( 'chld_thm_cfg_locale_css' ) ):
    function chld_thm_cfg_locale_css( $uri ){
        if ( empty( $uri ) && is_rtl() && file_exists( get_template_directory() . '/rtl.css' ) )
            $uri = get_template_directory_uri() . '/rtl.css';
        return $uri;
    }
endif;
add_filter( 'locale_stylesheet_uri', 'chld_thm_cfg_locale_css' );
         
if ( !function_exists( 'child_theme_configurator_css' ) ):
    function child_theme_configurator_css() {
        wp_enqueue_style( 'chld_thm_cfg_child', trailingslashit( get_stylesheet_directory_uri() ) . 'style.css', array( 'hello-elementor','hello-elementor','hello-elementor-theme-style','hello-elementor-header-footer' ) );
    }
endif;
add_action( 'wp_enqueue_scripts', 'child_theme_configurator_css', 10 );

// END ENQUEUE PARENT ACTION


function permitir_upload_json($mime_types){
    $mime_types['json'] = 'application/json';
    return $mime_types;
}
add_filter('upload_mimes', 'permitir_upload_json');







function custom_enqueue_scripts() {
    // Garantir que o jQuery seja carregado
    wp_enqueue_script('jquery');
    
    // Carregar a biblioteca Flatpickr para campos de data
    wp_enqueue_script('flatpickr', 'https://cdn.jsdelivr.net/npm/flatpickr', array('jquery'), null, true);
    
    // Carregar a biblioteca MaskMoney para formatação de valores monetários e percentuais
    wp_enqueue_script('jquery-maskmoney', 'https://cdnjs.cloudflare.com/ajax/libs/jquery-maskmoney/3.0.2/jquery.maskMoney.min.js', array('jquery'), null, true);
    
    // Adiciona o código JavaScript inline que será explicado abaixo
    add_action('wp_footer', 'add_custom_js_code');
}
add_action('wp_enqueue_scripts', 'custom_enqueue_scripts');



/* TRADUZIR O CALENDARIO DO ELEMENTOR */

function add_custom_js_code() {
    ?>
    <script>
    jQuery(document).ready(function($) {
        // Função para aguardar o carregamento do Flatpickr
        function waitForFlatpickr(callback) {
            if (typeof window.flatpickr !== "function") {
                setTimeout(function() { waitForFlatpickr(callback); }, 2);
                return;
            }
            callback();
        }

        // Aplicar a tradução e configuração do Flatpickr
        waitForFlatpickr(function() {
            flatpickr.l10ns.pt = {
                weekdays: {
                    shorthand: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb"],
                    longhand: ["Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado"],
                },
                months: {
                    shorthand: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"],
                    longhand: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"],
                },
                rangeSeparator: " até ",
            };

            // Localizar o Flatpickr com as traduções
            flatpickr.localize(flatpickr.l10ns.pt);
            flatpickr(".elementor-date-field");

            // Definir o formato da data
            setTimeout(function() {
                $(".elementor-date-field").each(function() {
                    flatpickr($(this)[0]).set("dateFormat", "d/m/Y");
                });
            }, 1000);
        });
    });
    </script>
    <?php
}




/* CALCULAR VALORES NA PROPOSTA */



function add_maskmoney_js_code() {
    ?>
    <script>
    jQuery(document).ready(function($) {
        // Formatar campo "valor" para moeda brasileira
        $('#form-field-valor_proposta').maskMoney({
            prefix: 'R$ ',
            thousands: '.',
            decimal: ',',
            affixesStay: true
        });

        // Formatar campo "desconto" para porcentagem
        $('#form-field-desconto').maskMoney({
            suffix: '%', // Sufixo de porcentagem
            precision: 2, // Permite duas casas decimais
            thousands: '.',
            decimal: ',',
            affixesStay: true
        });

        // Função para calcular o valor com desconto
        function calcularDesconto() {
            var valor = parseFloat($('#form-field-valor_proposta').maskMoney('unmasked')[0]);
            var desconto = parseFloat($('#form-field-desconto').maskMoney('unmasked')[0]);

            // Verifica se o desconto foi inserido (não vazio ou zero)
            if (!isNaN(desconto) && desconto > 0) {
                var valorDesconto = valor * (desconto / 100);
                var valorComDesconto = valor - valorDesconto;
                $('#form-field-preco_desconto').val('R$ ' + valorComDesconto.toFixed(2).replace('.', ','));
            } else {
                // Se o desconto for zero ou vazio, limpa o campo de preço com desconto
                $('#form-field-preco_desconto').val('');
            }
        }

        // Calcular desconto ao digitar no campo de desconto
        $('#form-field-desconto').on('keyup', function() {
            calcularDesconto();
        });

        // Se o valor for alterado e o desconto já tiver sido inserido, o valor com desconto será recalculado
        $('#form-field-valor_proposta').on('keyup', function() {
            if ($('#form-field-desconto').val() !== '') {
                calcularDesconto();
            }
        });
    });
    </script>
    
    <?php
}
add_action('wp_footer', 'add_maskmoney_js_code');







// Conectar com o banco de dados local usando configurações do WordPress
function connect_local_database() {
    global $wpdb;
    return $wpdb;
}

// Função para garantir que a coluna 'clicks' exista
function create_or_update_short_links_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'short_links';
    $charset_collate = $wpdb->get_charset_collate();
    
    // Criar a tabela, se ela ainda não existir
    $sql = "CREATE TABLE IF NOT EXISTS $table_name (
        id INT AUTO_INCREMENT PRIMARY KEY,
        long_url TEXT NOT NULL,
        short_code VARCHAR(10) NOT NULL UNIQUE,
        client_name VARCHAR(255) NOT NULL,
        url_base TEXT,
        clicks INT DEFAULT 0,  -- Certifica-se de que o campo 'clicks' seja criado
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    ) $charset_collate;";
    
    require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
    dbDelta($sql);
    
    // Verificar se a coluna 'clicks' existe
    $column_exists = $wpdb->get_results("SHOW COLUMNS FROM $table_name LIKE 'clicks'");
    if (empty($column_exists)) {
        // Adicionar a coluna 'clicks' se ela não existir
        $wpdb->query("ALTER TABLE $table_name ADD COLUMN clicks INT DEFAULT 0");
    }
}
add_action('after_setup_theme', 'create_or_update_short_links_table');

// Função para gerar código curto
function generateShortCode($length = 6) {
    return substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, $length);
}

// Função para gerar a URL longa com base nos dados do formulário e na URL dinâmica
function generate_long_url($data) {
    // Captura a URL fornecida no formulário
    if (isset($_POST['selected_page_url']) && !empty($_POST['selected_page_url'])) {
        $dynamic_url = esc_url_raw($_POST['selected_page_url']); // Captura a URL selecionada no formulário
    } else {
        $dynamic_url = '/modelo-1'; // Valor padrão caso o campo esteja vazio
    }

    // Constrói a URL base com todos os parâmetros
    $baseURL = $dynamic_url; // A URL base já está completa com o URL selecionado
    $params = http_build_query($data); // Inclui todos os parâmetros, incluindo links de pagamento
    return $baseURL . '?' . $params;
}





// Função para gerar o link de pagamento no Mercado Pago
function generate_payment_link($description, $value) {
    error_log("Gerando link de pagamento para: $description com valor de: $value"); // Log do valor

    // Verifique se o valor é válido
    if (empty($value) || !is_numeric($value) || $value <= 0) {
        error_log("Valor inválido para o link de pagamento: $value");
        return false; // Se o valor não for válido, retorne falso
    }

    $access_token = get_option('mp_access_token', ''); // Acessar o Access Token configurado
    if (empty($access_token)) {
        error_log("Access Token não configurado");
        return false; // Se não houver token, retornar falso
    }

    $data = array(
        "items" => array(
            array(
                "title" => $description,
                "quantity" => 1,
                "unit_price" => (float) $value
            )
        )
    );

    // Log da requisição
    error_log("Dados enviados para a API: " . json_encode($data));

    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_URL => 'https://api.mercadopago.com/checkout/preferences',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => '',
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 0,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => 'POST',
        CURLOPT_POSTFIELDS => json_encode($data),
        CURLOPT_HTTPHEADER => array(
            'Authorization: Bearer ' . $access_token,
            'Content-Type: application/json'
        ),
    ));

    $response = curl_exec($curl);
    if (curl_errno($curl)) {
        error_log("Erro no cURL: " . curl_error($curl));
    }
    curl_close($curl);
    error_log("Resposta da API do Mercado Pago: " . $response);

    $response = json_decode($response);
    if (isset($response->init_point)) {
        error_log("Link de pagamento gerado: " . $response->init_point);
        return $response->init_point;
    } else {
        error_log("Erro ao gerar link de pagamento. Resposta: " . print_r($response, true));
        return false; // Retornar falso se não for possível gerar o link
    }
}

// Função para lidar com a submissão do formulário via Ajax - ATUALIZADA COM ENTREGÁVEIS
function handle_proposal_submission() {
    // Conectar ao banco de dados local
    $conn_local = connect_local_database(); 

    // Capturar os dados do formulário de maneira segura
    $data = array(
        'cliente' => isset($_POST['form_fields']['cliente']) ? sanitize_text_field($_POST['form_fields']['cliente']) : '',
        'tipodeprojeto' => isset($_POST['form_fields']['tipodeprojeto']) ? sanitize_text_field($_POST['form_fields']['tipodeprojeto']) : '',
        'entregaveis' => isset($_POST['form_fields']['entregaveis']) ? sanitize_textarea_field($_POST['form_fields']['entregaveis']) : '', // NOVO CAMPO
        'envio' => isset($_POST['form_fields']['envio']) ? sanitize_text_field($_POST['form_fields']['envio']) : '',
        'validade' => isset($_POST['form_fields']['validade']) ? sanitize_text_field($_POST['form_fields']['validade']) : '',
        // ... (outros campos)
        'valorPlanoUm' => isset($_POST['form_fields']['valorPlanoUm']) ? floatval($_POST['form_fields']['valorPlanoUm']) : 0,
        'valorPlanoDois' => isset($_POST['form_fields']['valorPlanoDois']) ? floatval($_POST['form_fields']['valorPlanoDois']) : 0,
        'valorPlanoTres' => isset($_POST['form_fields']['valorPlanoTres']) ? floatval($_POST['form_fields']['valorPlanoTres']) : 0,
    );

    // Log dos valores dos planos
    error_log("Valores dos planos: Plano 1: " . $data['valorPlanoUm'] . ", Plano 2: " . $data['valorPlanoDois'] . ", Plano 3: " . $data['valorPlanoTres']);
    error_log("Tipo de Projeto: " . $data['tipodeprojeto']);
    error_log("Entregáveis: " . $data['entregaveis']); // Log do novo campo

    // Verifica se o Mercado Pago está ativado
    $is_activated = get_option('mp_activated', 0);
    
    if ($is_activated) {
        // Gerar links de pagamento do Mercado Pago para os 3 planos
        $payment_links = array(
            'plano1' => generate_payment_link('Plano 1 - ' . $data['cliente'], $data['valorPlanoUm']),
            'plano2' => generate_payment_link('Plano 2 - ' . $data['cliente'], $data['valorPlanoDois']),
            'plano3' => generate_payment_link('Plano 3 - ' . $data['cliente'], $data['valorPlanoTres'])
        );

        // Verificar se os links de pagamento foram gerados com sucesso
        if (!$payment_links['plano1'] || !$payment_links['plano2'] || !$payment_links['plano3']) {
            error_log("Erro ao gerar os links de pagamento.");
            wp_send_json_error('Erro ao gerar os links de pagamento.');
            return;
        }

        // Adicionar os links de pagamento ao array de dados para gerar a URL longa
        $data['linkPlanoUm'] = $payment_links['plano1'];
        $data['linkPlanoDois'] = $payment_links['plano2'];
        $data['linkPlanoTres'] = $payment_links['plano3'];
    } else {
        // Se o Mercado Pago não estiver ativado, apenas define os links como vazios
        $data['linkPlanoUm'] = '';
        $data['linkPlanoDois'] = '';
        $data['linkPlanoTres'] = '';
    }

    // Gerar a URL longa
    $long_url = generate_long_url($data);

    // Gerar código curto e verificar se já existe
    $short_code = generateShortCode();
    $table_name = $conn_local->prefix . 'short_links';

    $existing_code = $conn_local->get_var($conn_local->prepare("SELECT COUNT(*) FROM $table_name WHERE short_code = %s", $short_code));
    
    // Gera novo código se já existir
    while ($existing_code > 0) {
        $short_code = generateShortCode();
        $existing_code = $conn_local->get_var($conn_local->prepare("SELECT COUNT(*) FROM $table_name WHERE short_code = %s", $short_code));
    }

    // Inserir novo link encurtado no banco de dados local
    $url_base = 'https://' . $_SERVER['HTTP_HOST'];
    $short_url = $url_base . '/' . $short_code;

    $insert_data = array(
        'long_url' => $long_url,
        'short_code' => $short_code,
        'client_name' => $data['cliente'],
        'url_base' => $url_base
        // Não incluir payment_links, pois já está nos parâmetros da URL
    );

    $insert_format = array('%s', '%s', '%s', '%s');

    if ($conn_local->insert($table_name, $insert_data, $insert_format)) {
        // Retorna a URL longa e curta
        wp_send_json_success(array('long_url' => $long_url, 'short_url' => $short_url));
    } else {
        wp_send_json_error('Erro ao salvar o link.');
    }
}

add_action('wp_ajax_nopriv_submit_proposal', 'handle_proposal_submission');
add_action('wp_ajax_submit_proposal', 'handle_proposal_submission');










// Adicionar script de Ajax ao formulário do Elementor
function enqueue_proposal_form_script() {
    ?>
    <script type="text/javascript">
    jQuery(document).ready(function($) {
    // Função para carregar os modelos via Ajax
    function loadModelos() {
        $.ajax({
            url: '<?php echo admin_url('admin-ajax.php'); ?>',
            type: 'POST',
            data: {
                action: 'get_modelo_pages'
            },
            success: function(response) {
                if (response.success) {
                    var modelos = response.data;
                    var optionsHtml = '';

                    // Limpar o select antes de adicionar novos modelos
                    $('.custom-options').empty();

                    // Gerar o HTML para cada modelo
                    modelos.forEach(function(modelo) {
                        optionsHtml += '<li class="custom-option" data-id="' + modelo.id + '" data-url="' + modelo.url + '">';
                        optionsHtml += '<img src="' + modelo.thumbnail + '" class="thumbnail-preview" alt="" />';
                        optionsHtml += '<span>' + modelo.title + '</span>';
                        optionsHtml += '</li>';
                    });

                    // Adicionar os modelos ao select
                    $('.custom-options').html(optionsHtml);

                    // Reaplicar os eventos nos novos itens
                    $('.custom-option').on('click', function() {
                        var selectedUrl = $(this).data('url'); // Pegando a URL completa da página
                        var selectedId = $(this).data('id'); // Pegando o ID da página
                        $('.custom-select-trigger').data('selected-url', selectedUrl);
                        $('.custom-select-trigger').data('selected-id', selectedId);

                        // Atualizar o texto do trigger
                        $('.custom-select-trigger').text($(this).find('span').text());

                        // Fechar o select após escolher
                        $('.custom-select').removeClass('open');

                        // Fazendo a requisição REST API usando o ID da página
                        if (selectedId) {
                            fetch(`/wp-json/wp/v2/pages/${selectedId}`)
                                .then(response => response.json())
                                .then(data => {
                                    if (data.content && data.content.rendered) {
                                        $('#page-content').html(data.content.rendered); // Renderiza o conteúdo se existir
                                    } else {
                                        console.log('Página carregada sem conteúdo.');
                                    }
                                })
                                .catch(error => console.error('Erro ao carregar a página:', error));
                        }
                    });
                } else {
                    console.error('Erro ao buscar os modelos:', response.data);
                }
            },
            error: function(xhr, status, error) {
                console.error('Erro ao buscar os modelos:', error);
            }
        });
    }

    // Carregar os modelos ao carregar a página
    loadModelos();

    // Abrir/fechar o select personalizado
    $('.custom-select-trigger').on('click', function() {
        $(this).parent().toggleClass('open');
    });

    // Fechar o dropdown se clicar fora do select
    $(document).on('click', function(e) {
        if (!$(e.target).closest('.custom-select').length) {
            $('.custom-select').removeClass('open');
        }
    });

    // Submissão do formulário
    $('#formulario_proposta').on('submit', function(e) {
        e.preventDefault();

        // Serializando os dados do formulário
        var formData = $(this).serialize();

        // Capturando a URL da página selecionada no select
        var selectedPageUrl = $('.custom-select-trigger').data('selected-url');

        // Verifica se há uma URL selecionada e adiciona ao formData
        if (selectedPageUrl) {
            formData += '&selected_page_url=' + encodeURIComponent(selectedPageUrl);
        } else {
            alert('Por favor, selecione um modelo.');
            return false;
        }

        console.log('Dados do formulário:', formData); // Adicione esta linha para depurar

        // Enviando os dados via Ajax
        $.ajax({
            url: '<?php echo admin_url('admin-ajax.php'); ?>',
            type: 'POST',
            data: formData + '&action=submit_proposal',
            beforeSend: function() {
                console.log('Enviando solicitação Ajax...');
            },
            success: function(response) {
                if (response.success) {
                    console.log('Resposta recebida:', response);

                    // Atualizar o link do botão "ABRIR A PROPOSTA" com a URL longa
                    $('#link-proposta a').attr('href', response.data.long_url);
                    $('#link-proposta a').attr('target', '_blank'); // Abrir em uma nova aba

                    // Atualizar o link do botão "URL ENCURTADA" com a URL encurtada
                    var shortUrl = response.data.short_url;
                    $('#url-encurtada a').attr('href', shortUrl);

                    // Adicionar ação de copiar ao botão
                    $('#url-encurtada a').on('click', function(e) {
                        e.preventDefault();

                        // Criar um elemento de input temporário para copiar o link
                        var tempInput = $('<input>');
                        $('body').append(tempInput);
                        tempInput.val(shortUrl).select();
                        document.execCommand('copy');
                        tempInput.remove();
                    });

                    // Trocar a classe .secao-links para .secao-links-ativo
                    $('.secao-links').removeClass('secao-links').addClass('secao-links-ativo');

                    // Exibir o popup de sucesso com display flex
                    $('#success-popup').css('display', 'flex');

                    // Fechar o popup após 3 segundos
                    setTimeout(function() {
                        $('#success-popup').fadeOut();
                    }, 3000);
                } else {
                    alert('Erro: ' + response.data);
                }
            },
            error: function(xhr, status, error) {
                console.log('Erro na requisição Ajax:', error);
                alert('Erro na requisição. Verifique o console para mais detalhes.');
            }
        });
    });
});


    </script>
    <?php
}
add_action('wp_footer', 'enqueue_proposal_form_script');

// Função para retornar os modelos via Ajax
function get_modelo_pages_ajax() {
    $args = array(
        'post_type' => 'page',
        'posts_per_page' => -1,
        'orderby' => 'title',
        'order' => 'ASC',
        's' => '[Modelo]' // Filtra pelas páginas que contêm "[Modelo]" no título
    );
    $pages = get_posts($args);

    $modelos = array();
    
    foreach ($pages as $page) {
        $modelos[] = array(
            'id' => $page->ID,
            'title' => get_the_title($page->ID),
            'thumbnail' => get_the_post_thumbnail_url($page->ID, 'thumbnail'),
            'url' => get_permalink($page->ID),
        );
    }

    // Retorna os modelos no formato JSON
    wp_send_json_success($modelos);
}
add_action('wp_ajax_nopriv_get_modelo_pages', 'get_modelo_pages_ajax');
add_action('wp_ajax_get_modelo_pages', 'get_modelo_pages_ajax');





// Adicionar o HTML do popup animação no formulario 
function add_success_popup_html() {
    ?>
    <div id="success-popup" class="popup-overlay">
        <div class="popup-content">
            <svg class="checkmark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 52 52">
                <circle class="checkmark__circle" cx="26" cy="26" r="25" fill="none"/>
                <path class="checkmark__check" fill="none" d="M14.1 27.2l7.1 7.2 16.7-16.8"/>
            </svg>
            <h2>Proposta criada com sucesso!</h2>
        </div>
    </div>
    <?php
}
add_action('wp_footer', 'add_success_popup_html');


// Adicionar o CSS do popup no head
function add_success_popup_css() {
    ?>
    <style type="text/css">



    
    .popup-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.7);
    display: none; /* Inicialmente oculto */
    justify-content: center;
    align-items: center;
    z-index: 9999;
}

.popup-content {
    background-color: #fff;
    padding: 20px;
    border-radius: 10px;
    text-align: center;
    display: flex;
    flex-direction: column;
    width: 360px;
    justify-content: center;
    align-items: center;
}

.checkmark {
    width: 150px; /* Ajuste para 150px */
    height: 150px; /* Ajuste para 150px */
    border-radius: 50%;
    display: block;
    stroke-width: 2;
    stroke: #fff;
    stroke-miterlimit: 10;
    box-shadow: inset 0px 0px 0px #fbbe00;
    animation: fill 0.6s ease-in-out 0.4s forwards, scale 0.5s ease-in-out 0.9s both;
}

.checkmark__circle {
    stroke-dasharray: 300; /* Ajuste o tamanho do círculo */
    stroke-dashoffset: 300;
    stroke-width: 3; /* Ajuste a espessura do traçado */
    stroke-miterlimit: 10;
    stroke: #fbbe00;
    fill: none;
    animation: stroke 0.7s cubic-bezier(0.650, 0.000, 0.450, 1.000) forwards;
    
}

.checkmark__check {
    transform-origin: 50% 50%;
    stroke-dasharray: 100; /* Ajuste o tamanho do check */
    stroke-dashoffset: 100;
    animation: stroke 0.4s cubic-bezier(0.650, 0.000, 0.450, 1.000) 0.8s forwards;
}

@keyframes stroke {
    100% {
        stroke-dashoffset: 0;
    }
}

@keyframes scale {
    0%, 100% {
        transform: none;
    }
    50% {
        transform: scale3d(1.2, 1.2, 1); /* Ajuste o valor de escala para suavizar */
    }
}

@keyframes fill {
    100% {
        box-shadow: inset 0px 0px 0px 75px #fbbe00; /* Ajuste o preenchimento */
    }
}


    </style>
    <?php
}
add_action('wp_head', 'add_success_popup_css');



/*

function add_devtool_script() {
    echo "<script disable-devtool-auto src='https://cdn.jsdelivr.net/npm/disable-devtool'></script>";
}
add_action('wp_footer', 'add_devtool_script'); // Para o frontend
add_action('admin_footer', 'add_devtool_script'); // Para o admin


*/

// Função para remover o editor de temas e plugins no painel do WordPress
function disable_theme_plugin_editors() {
    // Remove o editor de temas e plugins
    define('DISALLOW_FILE_EDIT', true);
}
add_action('admin_init', 'disable_theme_plugin_editors');




// Função para adicionar o menu "Proposta Automática" e submenus no painel administrativo
function proposta_automatica_menu() {
    add_menu_page(
        'Proposta Automática',           
        'Proposta Automática',           
        'manage_options',               
        'proposta_automatica',          
        'proposta_automatica_page',     
        'dashicons-admin-links',        
        2                                
    );
    add_submenu_page(
        'proposta_automatica',          
        'Painel',                       
        'Painel',                       
        'manage_options',              
        'proposta_automatica',          
        'proposta_automatica_page'      
    );
    add_submenu_page(
        'proposta_automatica',          
        'Configurar Email',             
        'Configurar Email',             
        'manage_options',              
        'configurar_email',             
        'proposta_automatica_config_email_page'
    );
    add_submenu_page(
        'proposta_automatica',          
        'Templates',                    
        'Templates',                    
        'manage_options',              
        'templates_page',               
        'proposta_automatica_templates_page'
    );
    add_submenu_page(
        'proposta_automatica',          
        'Pagamento',                    
        'Pagamento',                    
        'manage_options',              
        'configurar_pagamento',         
        'proposta_automatica_config_pagamento_page'
    );
}
add_action('admin_menu', 'proposta_automatica_menu');








// Função para renderizar a página de configuração de pagamento
function proposta_automatica_config_pagamento_page() {
    // Salvar configurações ao submeter o formulário
    if (isset($_POST['mp_public_key']) && isset($_POST['mp_access_token'])) {
        $public_key = sanitize_text_field($_POST['mp_public_key']);
        $access_token = sanitize_text_field($_POST['mp_access_token']);
        
        // Captura o estado do checkbox corretamente
        $is_activated = isset($_POST['mp_activated']) ? 1 : 0; // Se não estiver definido, assume que é 0
        
        // Log dos dados recebidos
        error_log("Public Key: " . $public_key);
        error_log("Access Token: " . $access_token);
        error_log("Checkbox Ativado: " . $is_activated);

        update_option('mp_public_key', $public_key);
        update_option('mp_access_token', $access_token);
        update_option('mp_activated', $is_activated); // Salva o estado do checkbox
        
        // Log após salvar
        error_log("Configurações de pagamento salvas.");
    }
    
    // Recupera as opções do banco de dados
    $public_key = get_option('mp_public_key', '');
    $access_token = get_option('mp_access_token', '');
    $is_activated = get_option('mp_activated', 0); // Recupera o estado do checkbox

    ?>
    <div class="wrap proposta-automatica2">
        <img src="https://adm.propostaautomatica.com/wp-content/uploads/2024/09/LOGO-PROPOSTA.png" alt="links" style="width: 180px; margin-bottom: 50px;">
        <h2>Configurações de Pagamento - Mercado Pago</h2>
        <form class="form-email-config" method="post" action="">
            <img src="https://imgur.com/KBQzYDn.png" alt="links" style="width: 100px; margin: auto; margin-bottom: 25px; background-color: white; padding: 10px; border-radius: 10px;">
            
            <div class="form-ativar-mercado" style="margin-bottom: 15px;">
                <label style="display: inline-flex; align-items: center;">
                    <input type="checkbox" id="mp_activated" name="mp_activated" value="1" <?php checked($is_activated, 1); ?> style="display: inline; margin-right: 10px;" />
                    Ativar Mercado Pago
                </label>
            </div>

            <div class="form-group">
                <label for="mp_public_key">Public Key</label>
                <input type="text" id="mp_public_key" name="mp_public_key" value="<?php echo esc_attr($public_key); ?>" class="regular-text" required />
            </div>

            <div class="form-group">
                <label for="mp_access_token">Access Token</label>
                <input type="text" id="mp_access_token" name="mp_access_token" value="<?php echo esc_attr($access_token); ?>" class="regular-text" required />
            </div>
            
            <?php submit_button(); ?>

            <div class="feito-por" style="margin-top: 25px;">Não sabe onde encontrar as credenciais?</div>
            <a class="link-credencial" href="https://www.mercadopago.com.br/settings/account/credentials" target="_blank" style="color: #FBBE00;">Clique aqui para ver as suas</a>
        </form>
    </div>
    <?php
}





// Função para renderizar o conteúdo da página "Templates"
function proposta_automatica_templates_page() {
    ?>
    <div class="wrap proposta-automatica" style="background-color: black; color: white; text-align: center; padding: 40px;">
        <img src="https://adm.propostaautomatica.com/wp-content/uploads/2024/09/LOGO-PROPOSTA.png" alt="Logo" style="width: 180px; margin-bottom: 50px;">
        <div class="feito-por" style="margin-top: -35px;">
</div>
        <h2 style="color: white; font-size: 35px !important;">Nossos modelos</h2>

        <div id="cards-container">
            <!-- Cards serão carregados dinamicamente aqui -->
        </div>
    </div>

    <script>
    document.addEventListener('DOMContentLoaded', function() {
        fetch('https://adm.propostaautomatica.com/wp-content/uploads/2024/09/templates-propostas.json')
            .then(response => response.json())
            .then(data => {
                const cardsContainer = document.getElementById('cards-container');

                // Itera sobre os itens (categorias e templates)
                data.forEach(function(item) {
                    if (item.type === 'categoria') {
                        // Cria o título da categoria
                        const categoryTitle = document.createElement('h2');
                        categoryTitle.classList.add('categoria-title');
                        categoryTitle.innerText = item.nome;
                        cardsContainer.appendChild(categoryTitle);
                    }

                    if (item.type === 'template') {
                        // Cria o card do template
                        const cardElement = document.createElement('div');
                        cardElement.classList.add('card-template');

                        const imgElement = document.createElement('img');
                        imgElement.src = item.foto;
                        imgElement.alt = item.titulo;

                        const titleElement = document.createElement('h3');
                        titleElement.innerText = item.titulo;

                        const linkElement = document.createElement('a');
                        linkElement.href = item.link;
                        linkElement.target = '_blank';
                        linkElement.innerText = 'Ver modelo';

                        cardElement.appendChild(imgElement);
                        cardElement.appendChild(titleElement);
                        cardElement.appendChild(linkElement);

                        cardsContainer.appendChild(cardElement);
                    }
                });
            })
            .catch(error => {
                console.error('Erro ao carregar os modelos:', error);
            });
    });
    </script>
    <?php
}



// Função para renderizar o conteúdo da página "Proposta Automática"
function proposta_automatica_page() {
    ?>
    <div class="wrap proposta-automatica1" style="background-color: black; color: white; text-align: center; padding: 40px;">
        <img src="https://adm.propostaautomatica.com/wp-content/uploads/2024/09/LOGO-PROPOSTA.png" alt="links" style="width: 180px; margin-bottom: 50px;">


        <h2>Meus Links Gerados</h2>

        <div id="configuracoesForm">
            <div class="p-info-links">
                <div>
                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-6">
                        <path stroke-linecap="round" stroke-linejoin="round" d="M15.75 6a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0ZM4.501 20.118a7.5 7.5 0 0 1 14.998 0A17.933 17.933 0 0 1 12 21.75c-2.676 0-5.216-.584-7.499-1.632Z"></path>
                    </svg>
                    <p>Cliente</p>
                </div>
                <div>
                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-6">
                        <path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5m-9-6h.008v.008H12v-.008ZM12 15h.008v.008H12V15Zm0 2.25h.008v.008H12v-.008ZM9.75 15h.008v.008H9.75V15Zm0 2.25h.008v.008H9.75v-.008ZM7.5 15h.008v.008H7.5V15Zm0 2.25h.008v.008H7.5v-.008Zm6.75-4.5h.008v.008h-.008v-.008Zm0 2.25h.008v.008h-.008V15Zm0 2.25h.008v.008h-.008v-.008Zm2.25-4.5h.008v.008H16.5v-.008Zm0 2.25h.008v.008H16.5V15Z"></path>
                    </svg>
                    <p>Data</p>
                </div>
                <div>
                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-6">
                        <path stroke-linecap="round" stroke-linejoin="round" d="M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z"></path>
                        <path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"></path>
                    </svg>
                    <p>Clicks</p>
                </div>
            </div>

            <ul id="linksGerados">
                <?php proposta_automatica_list_links(); ?>
            </ul>

            <button class="deletar-tudo" onclick="deletarTodosLinks()">Deletar Todos os Links</button>
        </div>
    </div>
    <?php
}

// Função para listar os links gerados
function proposta_automatica_list_links() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'short_links';
    $results = $wpdb->get_results("SELECT * FROM $table_name");

    if ($results) {
        foreach ($results as $link) {
            $data_formatada = date('d/m/Y', strtotime($link->created_at));
            echo '<li>
                <div class="informacoes-link">
                    <div class="nome-cliente">' . esc_html($link->client_name) . '</div>
                    <div class="data-link">' . esc_html($data_formatada) . '</div>
                    <div class="clicks-cliente">' . esc_html($link->clicks) . '</div>
                </div>
                <div class="botes-do-link">
                    <button onclick="copiarLink(\'' . esc_html($link->short_code) . '\', \'' . esc_html($link->client_name) . '\')">
                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-6 icone-copiar">
                            <path stroke-linecap="round" stroke-linejoin="round" d="M9 12h3.75M9 15h3.75M9 18h3.75m3 .75H18a2.25 2.25 0 0 0 2.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 0 0-1.123-.08m-5.801 0c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m0 0H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V9.375c0-.621-.504-1.125-1.125-1.125H8.25ZM6.75 12h.008v.008H6.75V12Zm0 3h.008v.008H6.75V15Zm0 3h.008v.008H6.75V18Z"></path>
                        </svg>
                    </button>
                    <button onclick="deletarLink(\'' . esc_html($link->id) . '\')">
                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-6 icone-deletar">
                            <path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12"></path>
                        </svg>
                    </button>
                </div>
            </li>';
        }
    } else {
        echo '<li>Nenhum link encontrado.</li>';
    }
}

// Função para renderizar a página de configuração de email
function proposta_automatica_config_email_page() {
    if (isset($_POST['proposta_automatica_email'])) {
        $email = sanitize_email($_POST['proposta_automatica_email']);
        update_option('proposta_automatica_email', $email);
    }
    $email_salvo = get_option('proposta_automatica_email', '');
    ?>
    <div class="wrap proposta-automatica2">
        <img src="https://adm.propostaautomatica.com/wp-content/uploads/2024/09/LOGO-PROPOSTA.png" alt="links" style="width: 180px; margin-bottom: 50px;">
        <h2>Configurar Email para Notificações</h2>
        <form class="form-email-config" method="post" action="">
            <table class="form-table">
                <tr valign="top">
                    <th scope="row">Email de Notificação</th>
                    <td>
                        <input type="email" name="proposta_automatica_email" value="<?php echo esc_attr($email_salvo); ?>" class="regular-text" />
                        <!-- Remover o atributo required para permitir valor vazio -->
                    </td>
                </tr>
            </table>
            <?php submit_button(); ?>
        </form>
    </div>
    <?php
}

// Função para copiar e deletar links via JavaScript
function proposta_automatica_scripts() {
    ?>
    <script type="text/javascript">
        function copiarLink(codigo, cliente) {
            const link = window.location.origin + '/' + codigo;
            navigator.clipboard.writeText(link).then(function() {
                alert('Link copiado para ' + cliente);
            }, function(err) {
                alert('Erro ao copiar link');
            });
        }

        function deletarLink(id) {
            if (confirm('Tem certeza que deseja deletar este link?')) {
                jQuery.ajax({
                    url: ajaxurl, // ajaxurl é a variável global que aponta para o admin-ajax.php
                    type: 'POST',
                    data: {
                        action: 'deletar_link',
                        link_id: id
                    },
                    success: function(response) {
                        if (response.success) {
                            alert(response.data);
                            location.reload(); // Recarregar a página para atualizar a lista
                        } else {
                            alert('Erro: ' + response.data);
                        }
                    },
                    error: function(xhr, status, error) {
                        alert('Erro ao deletar o link: ' + error);
                    }
                });
            }
        }

        function deletarTodosLinks() {
            if (confirm('Tem certeza que deseja deletar todos os links?')) {
                jQuery.ajax({
                    url: ajaxurl,
                    type: 'POST',
                    data: { action: 'deletar_todos_links' },
                    success: function(response) {
                        if (response.success) {
                            alert(response.data);
                            location.reload();
                        } else {
                            alert('Erro: ' + response.data);
                        }
                    },
                    error: function(xhr, status, error) {
                        alert('Erro ao deletar todos os links: ' + error);
                    }
                });
            }
        }
    </script>
    <?php
}
add_action('admin_footer', 'proposta_automatica_scripts');

// Função para deletar um link via AJAX
function proposta_automatica_deletar_link() {
    global $wpdb;
    
    if (isset($_POST['link_id'])) {
        $link_id = intval($_POST['link_id']);
        $table_name = $wpdb->prefix . 'short_links';
        
        $delete = $wpdb->delete($table_name, array('id' => $link_id));
        
        if ($delete !== false) {
            wp_send_json_success('Link deletado com sucesso.');
        } else {
            wp_send_json_error('Erro ao deletar o link.');
        }
    } else {
        wp_send_json_error('ID do link não fornecido.');
    }
}
add_action('wp_ajax_deletar_link', 'proposta_automatica_deletar_link');

// Função para deletar todos os links via AJAX
function proposta_automatica_deletar_todos_links() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'short_links';

    $delete = $wpdb->query("DELETE FROM $table_name");

    if ($delete !== false) {
        wp_send_json_success('Todos os links foram deletados com sucesso.');
    } else {
        wp_send_json_error('Erro ao deletar todos os links.');
    }
}
add_action('wp_ajax_deletar_todos_links', 'proposta_automatica_deletar_todos_links');

// Adicionar ajaxurl no rodapé do admin
function proposta_automatica_add_ajaxurl() {
    ?>
    <script type="text/javascript">
        var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
    </script>
    <?php
}
add_action('admin_footer', 'proposta_automatica_add_ajaxurl');




// Função para redirecionar, contar cliques e enviar email
function handle_short_link_redirect() {
    global $wpdb;

    // Obter o código da URL atual
    $requested_code = trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/');

    // Verificar se a URL contém exatamente um código curto de 6 caracteres
    if (strlen($requested_code) === 6) {
        $table_name = $wpdb->prefix . 'short_links';
        
        // Buscar o link correspondente ao código curto
        $link = $wpdb->get_row($wpdb->prepare("SELECT * FROM $table_name WHERE short_code = %s", $requested_code));

        if ($link) {
            // Atualizar contagem de cliques
            $clicks = (int)$link->clicks;
            $result = $wpdb->query(
                $wpdb->prepare("UPDATE $table_name SET clicks = %d WHERE id = %d", $clicks + 1, $link->id)
            );

            if ($result === false) {
                // Se houver erro ao atualizar, exibir a mensagem de erro
                wp_die("Erro ao atualizar cliques: " . $wpdb->last_error);
            }

            // Enviar o email notificando que o link foi acessado
            enviar_email_notificacao($link->client_name, $link->long_url);

            // Redirecionar para a URL longa após atualizar a contagem de cliques e enviar o email
            wp_redirect($link->long_url);
            exit;
        } else {
            // Se o código curto não for encontrado, redirecionar para uma página 404
            wp_redirect(home_url('/404'));
            exit;
        }
    }
}
add_action('template_redirect', 'handle_short_link_redirect');


// Função para enviar email de notificação
function enviar_email_notificacao($client_name, $long_url) {
    $email_configurado = get_option('proposta_automatica_email');
    
    // Verifica se o e-mail está vazio; se sim, ignora o envio
    if (empty($email_configurado)) {
        return;
    }

    $from_email = get_option('admin_email');
    $from_name = "Proposta Automática"; // Força o nome do remetente
    $subject = "$client_name, abriu a sua proposta comercial 😎";

    ob_start();
    ?>
    <html>
    <head>
        <style>
            .header { background-color: #000000; text-align: center; border-radius: 20px; padding: 10px; }
            .image { text-align: center; padding-top: 20px; }
            .text { line-height: 1.3; color: #223324; font-family: 'Inter', sans-serif; font-size: 16px; text-align: center; max-width: 400px; margin: auto; }
            .footer { background-color: #000000; text-align: center; padding: 10px; border-radius: 20px; }
        </style>
    </head>
    <body>
        <div style="max-width: 560px; margin: auto;">
            <div class="header">
                <img src="https://adm.propostaautomatica.com/wp-content/uploads/2024/09/LOGO-PROPOSTA.png" alt="Logo" style="display: block; margin: 0 auto; width: 250px;">
            </div>
            <div class="text">
                <p><b><?php echo $client_name; ?></b> acabou de abrir o link da sua proposta comercial, fique atento!</p>
                <p><a href="<?php echo $long_url; ?>">Link da Proposta</a></p>
            </div>
            <div class="footer">
                <a style="color: white;" href="propostaautomatica.com">Clique aqui para ver mais propostas automáticas.</a>
            </div>
        </div>
    </body>
    </html>
    <?php
    $message = ob_get_clean();
    $headers = array(
        'Content-Type: text/html; charset=UTF-8',
        'From: ' . $from_name . ' <' . $from_email . '>'
    );

    wp_mail($email_configurado, $subject, $message, $headers);
}




// Função para salvar o status no banco de dados via AJAX
function save_user_status() {
    if (isset($_POST['status'])) {
        update_option('user_status_check', sanitize_text_field($_POST['status']));
        wp_send_json_success('Status salvo com sucesso');
    } else {
        wp_send_json_error('Status não fornecido');
    }
}
add_action('wp_ajax_save_user_status', 'save_user_status');
add_action('wp_ajax_nopriv_save_user_status', 'save_user_status');

// Função para estilizar o popup no admin e frontend
function add_custom_popup_css_admin() {
    ?>
    <style>
    
    </style>
    <?php
}
add_action('wp_head', 'add_custom_popup_css_admin'); // Adiciona o CSS no frontend
add_action('admin_head', 'add_custom_popup_css_admin'); // Adiciona o CSS no painel admin





// Função para registrar a rota REST API para receber notificações de desativação
function register_deactivation_route() {
    register_rest_route('subscriber/v1', '/deactivate/', array(
        'methods' => 'POST',  // Método POST para receber os dados
        'callback' => 'handle_deactivation_request',
        'permission_callback' => '__return_true',  // Permite acesso aberto para essa rota
    ));
}
add_action('rest_api_init', 'register_deactivation_route');

// Função para processar a requisição de desativação e atualizar o status no banco de dados local
function handle_deactivation_request(WP_REST_Request $request) {
    // Obtém os parâmetros do corpo da requisição
    $params = $request->get_json_params();
    $user_status_check = isset($params['user_status_check']) ? sanitize_text_field($params['user_status_check']) : '';
    $site_url = isset($params['site_url']) ? esc_url_raw($params['site_url']) : '';

    // Não importa se o usuário existe ou não, se a requisição for recebida, desativa o status
    if ($user_status_check === '0') {
        // Atualiza o status do usuário no banco de dados local para "0" (desativado)
        update_option('user_status_check', '0');  // Atualiza o status como desativado
        return new WP_REST_Response(array('status' => 'success', 'message' => 'Usuário desativado com sucesso'), 200);
    } else {
        return new WP_REST_Response(array('status' => 'error', 'message' => 'Status inválido'), 400);
    }
}


// ===================================
// SCRIPT PARA CAPTURAR DADOS DINÂMICOS DA URL - COM ENTREGÁVEIS
// ===================================

function add_dynamic_url_params_script() {
    ?>
    <script>
    jQuery(document).ready(function($) {
        // Função para pegar parâmetros da URL
        function getUrlParameter(name) {
            name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
            var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
            var results = regex.exec(location.search);
            return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
        }

        // Pegar todos os parâmetros da URL
        var params = {
            tipodeprojeto: getUrlParameter('tipodeprojeto'),
            entregaveis: getUrlParameter('entregaveis'), // NOVO CAMPO
            cliente: getUrlParameter('cliente'),
            envio: getUrlParameter('envio'),
            validade: getUrlParameter('validade'),
            valorPlanoUm: getUrlParameter('valorPlanoUm'),
            valorPlanoDois: getUrlParameter('valorPlanoDois'),
            valorPlanoTres: getUrlParameter('valorPlanoTres'),
            linkPlanoUm: getUrlParameter('linkPlanoUm'),
            linkPlanoDois: getUrlParameter('linkPlanoDois'),
            linkPlanoTres: getUrlParameter('linkPlanoTres')
        };

        // Log para debug
        console.log('Parâmetros capturados:', params);

        // Função para atualizar elementos
        function updateElement(selector, value, isLink = false) {
            if ($(selector).length && value) {
                if (isLink) {
                    $(selector).attr('href', value);
                } else {
                    // Para campos de texto longo, usar html() preserva quebras de linha
                    if (selector === '#entregaveis' || selector === '.entregaveis-dinamico') {
                        // Converte quebras de linha em <br>
                        var formattedValue = value.replace(/\n/g, '<br>');
                        $(selector).html(formattedValue);
                    } else {
                        $(selector).text(value);
                    }
                }
                console.log('Atualizado:', selector, '=', value);
            }
        }

        // Atualizar elementos por ID
        updateElement('#tipodeprojeto', params.tipodeprojeto);
        updateElement('#entregaveis', params.entregaveis); // NOVO CAMPO
        updateElement('#cliente', params.cliente);
        updateElement('#envio', params.envio);
        updateElement('#validade', params.validade);
        updateElement('#valorPlanoUm', params.valorPlanoUm);
        updateElement('#valorPlanoDois', params.valorPlanoDois);
        updateElement('#valorPlanoTres', params.valorPlanoTres);
        
        // Atualizar links de pagamento
        updateElement('#linkPlanoUm', params.linkPlanoUm, true);
        updateElement('#linkPlanoDois', params.linkPlanoDois, true);
        updateElement('#linkPlanoTres', params.linkPlanoTres, true);

        // Também atualizar por classes
        updateElement('.tipo-projeto-dinamico', params.tipodeprojeto);
        updateElement('.entregaveis-dinamico', params.entregaveis); // NOVO CAMPO
        updateElement('.cliente-dinamico', params.cliente);
        updateElement('.envio-dinamico', params.envio);
        updateElement('.validade-dinamico', params.validade);
        updateElement('.valor-plano-um', params.valorPlanoUm);
        updateElement('.valor-plano-dois', params.valorPlanoDois);
        updateElement('.valor-plano-tres', params.valorPlanoTres);

        // Atualizar usando data-attribute
        $('[data-dynamic-field]').each(function() {
            var field = $(this).data('dynamic-field');
            if (params[field]) {
                if ($(this).is('a')) {
                    $(this).attr('href', params[field]);
                } else {
                    if (field === 'entregaveis') {
                        // Preservar quebras de linha para entregáveis
                        var formattedValue = params[field].replace(/\n/g, '<br>');
                        $(this).html(formattedValue);
                    } else {
                        $(this).text(params[field]);
                    }
                }
            }
        });
    });
    </script>
    <?php
}
add_action('wp_footer', 'add_dynamic_url_params_script');


// ===================================
// VERSÃO PHP PARA CAPTURAR DADOS - COM ENTREGÁVEIS
// ===================================

function add_dynamic_php_values() {
    // Capturar parâmetros da URL com PHP
    $tipodeprojeto = isset($_GET['tipodeprojeto']) ? sanitize_text_field($_GET['tipodeprojeto']) : '';
    $entregaveis = isset($_GET['entregaveis']) ? sanitize_textarea_field($_GET['entregaveis']) : ''; // NOVO CAMPO
    $cliente = isset($_GET['cliente']) ? sanitize_text_field($_GET['cliente']) : '';
    $envio = isset($_GET['envio']) ? sanitize_text_field($_GET['envio']) : '';
    $validade = isset($_GET['validade']) ? sanitize_text_field($_GET['validade']) : '';
    
    // Criar variáveis JavaScript globais
    ?>
    <script>
        // Variáveis globais acessíveis em todo o site
        window.propostaData = {
            tipodeprojeto: '<?php echo esc_js($tipodeprojeto); ?>',
            entregaveis: '<?php echo esc_js($entregaveis); ?>', // NOVO CAMPO
            cliente: '<?php echo esc_js($cliente); ?>',
            envio: '<?php echo esc_js($envio); ?>',
            validade: '<?php echo esc_js($validade); ?>'
        };
        
        console.log('Dados da proposta:', window.propostaData);
    </script>
    <?php
}
add_action('wp_head', 'add_dynamic_php_values');





// Estilos personalizados para o frontend e admin
function proposta_automatica_styles() {
    $current_url = $_SERVER['REQUEST_URI']; // Captura a URL atual

    // Verifica se a URL contém as páginas específicas (para o admin)
    if (
        strpos($current_url, 'page=proposta_automatica') !== false ||
        strpos($current_url, 'page=configurar_email') !== false ||
        strpos($current_url, 'page=configurar_pagamento') !== false ||
        strpos($current_url, 'page=templates_page') !== false ||
        is_page() // Para o frontend, aplica o estilo em todas as páginas
    ) {
        ?>
        <style type="text/css">
           #wpcontent {
            padding: 0px;
        }
        
        #wpbody-content {
            padding: 0px !important;
            background-color: black;
            position: relative;
            overflow: hidden;
        }


        .wrap.proposta-automatica {
            background-color: #000;
            color: white;
            text-align: center;
            padding: 40px;
            margin: 0px;
            height: 100vh;
            min-height: 1500px;
        }

        .wrap.proposta-automatica1 {
            background-color: black;
    color: white;
    text-align: center;
    padding: 40px;
    width: 60%;
    margin: auto;
    height: auto;
        }

        .wrap.proposta-automatica2 {
            background-color: #000;
            color: white;
            text-align: center;
            padding: 40px;
            margin: 0px;
            height: 100vh;
        }

        .wrap.proposta-automatica2 h2 {
            color: white;
    font-size: 25px;
    padding-bottom: 20px;
        }

        .wrap.proposta-automatica1 h2 {
            color: white;
    font-size: 25px;
    padding-bottom: 20px;
        }

        .wrap.proposta-automatica h2 {
            color: white;
            font-size: 20px;
            text-transform: uppercase;
            padding-bottom: 20px;
        }

        .p-info-links div {
            display: inline-block;
            margin: 10px;
            color: #fff;
        }

        .informacoes-link {
            display: flex;
            justify-content: space-around;
            margin: 10px 0;
        }

        .botes-do-link button {
            margin: 0 5px;
            background: none;
            border: none;
            cursor: pointer;
            color: white;
        }

        .icone-copiar, .icone-deletar {
            width: 24px;
            height: 24px;
        }

        #configuracoesForm label {
    color: white;
    font-size: 18px;
}

.secao-token button {
    background-color: white !important;
    border: none !important;
    color: black !important;
    width: 100%;
    padding: 10px;
    font-family: "Poppins";
    font-size: 18px;
    font-weight: 600;
    border-radius: 10px;
}

.deletar-tudo {
    background-color: red !important;
    border: none !important;
    color: white !important;
    padding: 10px;
    font-size: 18px;
    font-weight: 600;
    border-radius: 10px;
    text-transform: uppercase;
    cursor: pointer;
    width: 40%;

}

.secao-token {
    margin-bottom: 15px;
}


#linksGerados {
    list-style: none;
    padding: 0px;
    display: flex;
    flex-direction: column;
    column-gap: 20px !important;
    gap: 12px;
    margin-bottom: 20px;
    height: 500px;
    overflow-y: scroll;
    overflow-x: hidden;
    padding-right: 6px;
}


.size-6 {
    width: 30px;
    height: 18px;
}
    
    
    .icone-copiar, .icone-deletar {
    color: #fff;
    cursor: pointer;
}
    
#linksGerados li {
    display: flex;
    justify-content: space-between;
    align-items: center;
    border: 1px solid #ffffff47;
    border-radius: 10px;
    padding: 10px;
}   

#linksGerados li:hover {
    background-color: #fbbe00;
}

#linksGerados li:hover .nome-cliente, #linksGerados li:hover .data-link, #linksGerados li:hover .clicks-cliente {
    color: black;
}

#linksGerados li:hover .botes-do-link button {
    border: 1px solid black;
    

}

#linksGerados li:hover .botes-do-link svg {
    color: black;
}


.informacoes-link  {
    color: white;
    width: 75%;
    text-align: left;
    font-size: 18px;
    overflow: hidden;
}

.botes-do-link {
    width: 25%;
}

.botes-do-link button {
    border: 1px solid white;
    padding: 0px;
    height: 40px;
    width: 40px;
    border-radius: 10px;
    padding-top: 5px;
}


.botes-do-link button:hover {
    background-color: white;
}

.botes-do-link button:hover svg {
    color: black;
}


#configuracoesForm {
    text-align: center;
    backdrop-filter: blur(1px);
    background-color: #ffffff1a;
    padding: 20px;
    border-radius: 20px;
    z-index: 10;
}



#linksGerados::-webkit-scrollbar{
    width: 0.2vw;
    background: #F9F2F4;
    border-radius: 30px;
}
#linksGerados::-webkit-scrollbar-thumb{
    background: #fbbe00;
    border-radius: 30px;
}


@media(max-width: 767px){
.botes-do-link button {
    height: 30px;
    width: 30px;
}

.deletar-tudo {
width: 80%;
}


}


.p-info-links, .informacoes-link {
    display: flex;
    flex-direction: row;
}

.p-info-links p {
    color: white;
    text-align: left;
    font-size: 15px;
    text-transform: uppercase;
    margin: 0px;
    margin-top: -5px;
    margin-bottom: 5px;
}



.p-info-links svg {
    color: #fff;
}

.informacoes-link div {
    width: 55%;
}

.clicks-cliente {
    text-align: center;
}

#configuracoesForm > div > div:nth-child(1) {
    width: 33% !important;
    gap: 10px;
    display: flex;
    flex-direction: column;
}


#configuracoesForm > div > div:nth-child(2) {
    width: 20% !important;
    text-align: center !important;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 10px;

}

#configuracoesForm > div > div:nth-child(3) {
    width: 26% !important;
    text-align: center !important;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 10px;
}

#configuracoesForm > div.p-info-links > div:nth-child(2) > p {
    text-align: center;
}

#configuracoesForm > div.p-info-links > div:nth-child(1) > svg {
    margin-left: 10px !important;
}

.data-link {
    width: 33% !important;
}

.clicks-cliente {
width: 10% !important;
}


#cards-container {
        display: flex;
        flex-wrap: wrap;
        justify-content: center;
        gap: 20px;
    }

    .card-template:hover {
        transform: scale(1.05);
        transition:0.3s;
    }

    .card-template {
        background: rgba(255,255,255,0.05);
        color: black;
        border-radius: 10px;
        border: 1px solid rgba(255,255,255,0.1);
        padding: 20px;
        max-width: 300px;
        transition:0.3s;
        z-index: 10;
    }

    .card-template img {
        width: 100%;
        height: auto;
        border-radius: 10px;
    }

    .card-template h3 {
        margin-top: 10px;
        color: #fff;
    }

    .card-template a {
        display: inline-block;
        padding: 10px 20px;
        background-color: #fbbe00;
        color: #000;
        border-radius: 5px;
        text-decoration: none;
    }

    .categoria-title {
        width: 100%;
        text-align: center;
        color: white;
        margin-top: 40px;
    }

    #cards-container {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
    
    }
    
    .categoria-title {
    width: 100%;
    }

    .card-template {
    width: 33%;
    }

    .wrap.proposta-automatica {
        height: auto !important;
    }


    .feito-por a {
        color: #00E99E;
    }

.form-email-config {
    display: flex;
    flex-direction: column;
    background-color: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    width: 500px;
    margin: auto;
    border-radius: 10px;
    padding: 20px;
}

.form-email-config th {
    color: #fff;
}

.form-email-config input {
    background-color: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    color: #fff;
}


#submit {

    background-color: #fbbe00;
    border: none;
    color: black;
    border-radius: 5px;
}


.elementor-form {
    display: flex !important;
    flex-direction: column !important;
}

#formulario {
    display: flex !important;
}


/* Estilos para o container do select */
.custom-select {
    position: relative;
    display: block;
    border: 1px solid #919191;
    border-radius: 5px;
    cursor: pointer;
    color: white;
    border-radius: 10px;
}

/* Trigger - o campo que exibe a opção selecionada */
.custom-select-trigger {
    padding: 10px;
    font-size: 16px;
    color: #333;
    border-radius: 5px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    transition: background-color 0.3s;
    color: white;
}


/* As opções que aparecem ao abrir o select */
.custom-options {
    position: absolute;
    top: 100%;
    left: 0;
    width: 100%;
    max-height: 200px;
    overflow-y: auto;
    background-color: #fff;
    border: 1px solid #ccc;
    border-radius: 5px;
    display: none; /* As opções ficam ocultas até o seletor ser aberto */
    z-index: 10;
    padding: 0px;
    margin: 0px;
}

.custom-select.open .custom-options {
    display: block; /* Exibir as opções quando o seletor estiver aberto */
}

/* Estilos individuais das opções */
.custom-option {
    padding: 10px;
    display: flex;
    align-items: center;
    cursor: pointer;
    transition: background-color 0.3s ease;
}

.custom-option:hover {
    background-color: #fbbe00;
}


/* Miniaturas ao lado do texto */
.custom-option img.thumbnail-preview {
    width: 55px;
    height: 45px;
    margin-right: 10px;
    border-radius: 3px;
    object-fit: cover;
}

/* Texto do nome do modelo */
.custom-option span {
    font-size: 16px;
    color: #333;
}

/* Alterações visuais ao selecionar uma opção */
.custom-option.selected {
    background-color: #e9e9e9;
}

/* Área de conteúdo da página selecionada */
#page-content {
    margin-top: 20px;
    padding: 15px;
    background-color: #f9f9f9;
    border: 1px solid #ddd;
    border-radius: 5px;
}



.link-credencial:focus {
    outline: none !important;
    box-shadow: none !important;
}


.form-group {
    margin-bottom: 15px;
    width: 100%;
    text-align: left;
    display: flex;
    gap: 20px;
    align-items: center;

}

.form-group label {
    display: block;
    margin-bottom: 5px;
    width: 16%;
}

.form-group input {
    background-color: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.1);
    color: #fff;
}


.form-ativar-mercado input {
    padding: 8px;
    border: 1px solid #ccc;
    border-radius: 4px;
}

.form-ativar-mercado {
    margin-bottom: 15px;
    width: 100%;
    text-align: left;
    display: flex;
    gap: 20px;
    align-items: center;
}





        </style>
        <?php
    }
}

// Aplica os estilos no frontend
add_action('wp_head', 'proposta_automatica_styles');

// Aplica os estilos no admin
add_action('admin_head', 'proposta_automatica_styles');

add_filter( 'widget_text', 'do_shortcode' );
add_filter( 'widget_title', 'do_shortcode' );
add_filter( 'the_title', 'do_shortcode' );



