/**
 * Theme Name:     GeneratePress Child
 * Author:         Tom Usborne
 * Template:       generatepress
 * Text Domain:	   generatepress-child
 * Description:    GeneratePress is a lightweight WordPress theme built with a focus on speed and usability. Performance is important to us, which is why a fresh GeneratePress install adds less than 10kb (gzipped) to your page size. We take full advantage of the block editor (Gutenberg), which gives you more control over creating your content. If you use page builders, GeneratePress is the right theme for you. It is completely compatible with all major page builders, including Beaver Builder and Elementor. Thanks to our emphasis on WordPress coding standards, we can boast full compatibility with all well-coded plugins, including WooCommerce. GeneratePress is fully responsive, uses valid HTML/CSS, and is translated into over 25 languages by our amazing community of users. A few of our many features include 60+ color controls, powerful dynamic typography, 5 navigation locations, 5 sidebar layouts, dropdown menus (click or hover), and 9 widget areas. Learn more and check out our powerful premium version at https://generatepress.com
 */

/** botão exportar */
function exportar_dados_shortcode() {
    ob_start(); ?>
    <div class="export-container" style="position: relative; display: inline-block;">
        <button id="export-btn" style="border: none; background: none; cursor: pointer;">
            <img src="https://microsysteminfo.com.br/_externos/imgs/bnt-export04.webp" alt="Export">
        </button>
        <div id="export-dropdown" style="display: none; position: absolute; width: 110px; background: #c4d5e2; border: 1px solid #ffffff; box-shadow: 2px 2px 5px rgba(0,0,0,0.2); padding: 5px; border-radius: 4px; z-index: 998">
            <button class="export-option" data-format="json" style="display: block; width: 100%; background: none; border: none; color: #0b3f29; padding: 5px; text-align: left; cursor: pointer;">JSON</button>
            <button class="export-option" data-format="xml" style="display: block; width: 100%; background: none; border: none; color: #0b3f29; padding: 5px; text-align: left; cursor: pointer;">XML</button>
            <button class="export-option" data-format="csv" style="display: block; width: 100%; background: none; border: none; color: #0b3f29; padding: 5px; text-align: left; cursor: pointer;">CSV</button>
            <button class="export-option" data-format="txt" style="display: block; width: 100%; background: none; border: none; color: #0b3f29; padding: 5px; text-align: left; cursor: pointer;">TXT</button>
        </div>
    </div>

    <script>
    document.addEventListener("DOMContentLoaded", function() {
        const exportBtn = document.getElementById("export-btn");
        const dropdown = document.getElementById("export-dropdown");
        const options = document.querySelectorAll(".export-option");

        exportBtn.addEventListener("click", function() {
            dropdown.style.display = dropdown.style.display === "block" ? "none" : "block";
        });

        document.addEventListener("click", function(event) {
            if (!exportBtn.contains(event.target) && !dropdown.contains(event.target)) {
                dropdown.style.display = "none";
            }
        });

        options.forEach(option => {
            option.addEventListener("mouseover", function() {
                this.style.background = "#fff";
            });
            option.addEventListener("mouseout", function() {
                this.style.background = "none";
            });
            option.addEventListener("click", function() {
                const format = this.getAttribute("data-format");
                exportData(format);
            });
        });

        function exportData(format) {
            const elements = document.querySelectorAll(".export");
            if (elements.length === 0) {
                alert("Nenhum dado disponível para exportação.");
                return;
            }
            
            let data = [];
            elements.forEach(el => {
                data.push(el.innerText.trim());
            });
            
            let content = "";
            let mimeType = "";
            
            switch(format) {
                case "json":
                    content = JSON.stringify(data, null, 2);
                    mimeType = "application/json";
                    break;
                case "xml":
                    content = "<dados>" + data.map(d => `<item>${d}</item>`).join("") + "</dados>";
                    mimeType = "application/xml";
                    break;
                case "csv":
                    content = data.join(",\n");
                    mimeType = "text/csv";
                    break;
                case "txt":
                    content = data.join("\n");
                    mimeType = "text/plain";
                    break;
            }
            
            const blob = new Blob([content], { type: mimeType });
            const a = document.createElement("a");
            a.href = URL.createObjectURL(blob);
            a.download = `export.${format}`;
            document.body.appendChild(a);
            a.click();
            document.body.removeChild(a);
        }
    });
    </script>
    <?php return ob_get_clean();
}
add_shortcode('exportar', 'exportar_dados_shortcode');



/** Obras - Início código soma campos  */

// Shortcode [valtotal] para somar os campos 'obra_valor' e 'obra_medicao'
function shortcode_valtotal() {
    // Garante que estamos dentro do loop ou acessando o post atual
    global $post;

    if (!$post) return '';

    // Obtém os valores dos campos personalizados
    $contrato = get_post_meta($post->ID, 'obra_valor', true);
    $aditivo  = get_post_meta($post->ID, 'obra_medicao', true);

    // Remove tudo que não for número ou vírgula
    $contrato = preg_replace('/[^\d,]/', '', $contrato);
    $aditivo  = preg_replace('/[^\d,]/', '', $aditivo);

    // Converte valores para float (considerando vírgula como separador decimal)
    $contrato = str_replace('.', '', $contrato); // Remove milhar
    $contrato = str_replace(',', '.', $contrato); // Troca vírgula por ponto
    $contrato = floatval($contrato);

    $aditivo = str_replace('.', '', $aditivo);
    $aditivo = str_replace(',', '.', $aditivo);
    $aditivo = floatval($aditivo);

    // Soma os valores
    $total = $contrato + $aditivo;

    // Formata o resultado como moeda brasileira (R$)
    $valor_formatado = 'R$ ' . number_format($total, 2, ',', '.');

    return $valor_formatado;
}
add_shortcode('valtotal', 'shortcode_valtotal');

/* soma agora o resultados dentro da classe */

// Shortcode para gerar o container onde a soma será exibida
function shortcode_soma_colunas_html() {
    return '<span id="soma-geral-js">Calculando...</span>';
}
add_shortcode('somageral', 'shortcode_soma_colunas_html');

// Enfileira o JS
function registrar_script_somageral() {
    ?>
    <script>
    document.addEventListener('DOMContentLoaded', function() {
        let total = 0;
        document.querySelectorAll('.jet-dynamic-table__col--total').forEach(el => {
            let valorTexto = el.textContent.replace(/[^\d,]/g, '').replace(',', '.');
            let valorFloat = parseFloat(valorTexto);
            if (!isNaN(valorFloat)) {
                total += valorFloat;
            }
        });
        // Formata no padrão brasileiro
        const totalFormatado = total.toLocaleString('pt-BR', {
            style: 'currency',
            currency: 'BRL'
        });
        const span = document.getElementById('soma-geral-js');
        if (span) {
            span.textContent = totalFormatado;
        }
    });
    </script>
    <?php
}
add_action('wp_footer', 'registrar_script_somageral');

// Adiciona o shortcode [ultima-atualizacao]
function shortcode_ultima_atualizacao() {
    // === INSIRA AQUI O SLUG DO SEU POST TYPE ===
    $post_type = 'obras'; // Ex: 'noticias', 'eventos', etc.

    // Argumentos para consulta
    $args = array(
        'post_type'      => $post_type,
        'posts_per_page' => 1,
        'orderby'        => 'modified',
        'order'          => 'DESC',
        'post_status'    => 'publish'
    );

    $query = new WP_Query($args);

    if ($query->have_posts()) {
        $query->the_post();
        $ultima_data = get_the_modified_date('d/m/Y');
        wp_reset_postdata();
        return $ultima_data;
    } else {
        return 'Nenhuma atualização encontrada.';
    }
}
add_shortcode('ultima-atualizacao', 'shortcode_ultima_atualizacao');


/* 
 EXIBE ÚLTIMA ATUALIZAÇÃO DE UM CCT
 Uso: [ultima_atualizacao_cct cct="emendas_parlamentares"]
*/

function mostrar_ultima_atualizacao_cct_only( $atts ) {

    $atts = shortcode_atts( array(
        'cct' => '', // slug do CCT
    ), $atts );

    if ( empty( $atts['cct'] ) ) {
        return '';
    }

    global $wpdb;

    $table = $wpdb->prefix . 'jet_cct_' . sanitize_key( $atts['cct'] );

    // Busca a última data (formato salvo: Y-m-d ou Y-m-d H:i:s)
    $ultima_data = $wpdb->get_var(
        "SELECT updated_at 
         FROM {$table} 
         WHERE updated_at IS NOT NULL 
         ORDER BY updated_at DESC 
         LIMIT 1"
    );

    if ( ! $ultima_data ) {
        return '<p style="font-size:12px;margin:0;color:#767e83;">Nenhum registro encontrado.</p>';
    }

    // Converte para o formato brasileiro
    $data_formatada = date_i18n( 'd/m/Y', strtotime( $ultima_data ) );

    return '<p style="font-size:12px;margin:0;color:#767e83;">Última atualização: ' . esc_html( $data_formatada ) . '</p>';
}

add_shortcode( 'ultima_atualizacao_cct', 'mostrar_ultima_atualizacao_cct_only' );

/*
 SOMA UM CAMPO MONETÁRIO (TEXTO) DE UM CCT
 Uso: [soma_valor_cct cct="emendas_parlamentares" campo="valor_pago_emenda"]
*/

function soma_valor_monetario_cct( $atts ) {

    $atts = shortcode_atts( array(
        'cct'   => '', // slug do CCT
        'campo' => '', // campo monetário
    ), $atts );

    if ( empty( $atts['cct'] ) || empty( $atts['campo'] ) ) {
        return '';
    }

    global $wpdb;

    $table = $wpdb->prefix . 'jet_cct_' . sanitize_key( $atts['cct'] );
    $campo = sanitize_key( $atts['campo'] );

    // Busca todos os valores do campo
    $valores = $wpdb->get_col(
        "SELECT {$campo}
         FROM {$table}
         WHERE {$campo} IS NOT NULL
         AND {$campo} != ''"
    );

    if ( empty( $valores ) ) {
        return '<strong>R$ 0,00</strong>';
    }

    $total = 0;

    foreach ( $valores as $valor ) {

        // Remove R$, espaços e pontos de milhar
        $valor = str_replace( array( 'R$', ' ', '.' ), '', $valor );

        // Troca vírgula por ponto
        $valor = str_replace( ',', '.', $valor );

        // Converte para float
        $total += floatval( $valor );
    }

    // Formata para Real brasileiro
    $total_formatado = 'R$ ' . number_format( $total, 2, ',', '.' );

    return '<strong>' . esc_html( $total_formatado ) . '</strong>';
}

add_shortcode( 'soma_valor_cct', 'soma_valor_monetario_cct' );