/*
 Theme Name:   Flatsome Child
 Theme URI:    https://seusite.com/
 Description:  Tema filho do Flatsome
 Author:       Seu Nome
 Author URI:   https://seusite.com/
 Template:     flatsome
 Version:      1.0.0
*/

<?php
/**
 * Flatsome functions and definitions
 *
 * @package flatsome
 */

update_option( get_template() . '_wup_purchase_code', '*******' );
update_option( get_template() . '_wup_supported_until', '01.01.2050' );
update_option( get_template() . '_wup_buyer', 'Licensed' );

require get_template_directory() . '/inc/init.php';

flatsome()->init();

/**
 * It's not recommended to add any custom code here. Please use a child theme
 * so that your customizations aren't lost during updates.
 *
 * Learn more here: https://developer.wordpress.org/themes/advanced-topics/child-themes/
 */

// 1️⃣ Adiciona uma nova ação personalizada ao menu de ações dos pedidos no admin WooCommerce
add_filter('woocommerce_order_actions', 'adicionar_acao_personalizada_webhook');
function adicionar_acao_personalizada_webhook($actions) {
    // 'enviar_webhook_meusite_xyz' é o identificador da ação personalizada
    // 'Enviar para planilha exclusiva' é o rótulo que aparece no painel do pedido
    $actions['enviar_webhook_meusite_xyz'] = 'Enviar para planilha exclusiva';
    return $actions;
}

// 2️⃣ Define o que acontece quando essa nova ação personalizada é executada
add_action('woocommerce_order_action_enviar_webhook_meusite_xyz', 'processar_acao_personalizada_webhook');
function processar_acao_personalizada_webhook($order) {

    // 3️⃣ Monta os dados do pedido para envio
    $dados_pedido = [
        'id' => $order->get_id(),
        'data' => $order->get_date_created()->date('Y-m-d H:i:s'),
        'total' => $order->get_total(),
        'cliente' => [
            'nome' => $order->get_billing_first_name() . ' ' . $order->get_billing_last_name(),
            'email' => $order->get_billing_email(),
            'telefone' => $order->get_billing_phone(),
        ],
        'itens' => [],
    ];

    // 4️⃣ Adiciona os itens do pedido ao array de dados
    foreach ($order->get_items() as $item) {
        $dados_pedido['itens'][] = [
            'produto' => $item->get_name(),
            'quantidade' => $item->get_quantity(),
            'total' => $item->get_total(),
        ];
    }

    // 5️⃣ Define o URL do webhook que irá receber os dados
    $webhook_url = 'https://hook.us1.make.com/dmlx89e9188o8xnkuneq8z49u5xqokb1';

    // 6️⃣ Envia os dados via POST para o webhook, no formato JSON
    $response = wp_remote_post($webhook_url, [
        'headers' => ['Content-Type' => 'application/json'],
        'body' => json_encode($dados_pedido),
        'timeout' => 15,
    ]);

    // 7️⃣ Verifica se ocorreu algum erro na requisição e registra no log
    if (is_wp_error($response)) {
        error_log('Erro ao enviar webhook: ' . $response->get_error_message());
    }
}


// ============================
// CAMPO PARA PRODUTOS SIMPLES
// ============================

// 1. Adiciona o campo no admin
add_action('woocommerce_product_options_pricing', 'adicionar_campo_preco_custo_simples');
function adicionar_campo_preco_custo_simples() {
    woocommerce_wp_text_input(array(
        'id' => '_preco_custo',
        'label' => 'Preço de Custo',
        'placeholder' => 'Ex: 25.00',
        'desc_tip' => true,
        'description' => 'Insira o preço de custo do produto.',
        'type' => 'number',
        'custom_attributes' => array(
            'step' => '0.01',
            'min' => '0'
        ),
        'wrapper_class' => 'form-row-last' // Alinha à direita como o preço promocional
    ));
}

// 2. Salva o valor
add_action('woocommerce_process_product_meta', 'salvar_campo_preco_custo_simples');
function salvar_campo_preco_custo_simples($post_id) {
    if (isset($_POST['_preco_custo'])) {
        update_post_meta($post_id, '_preco_custo', wc_clean($_POST['_preco_custo']));
    }
}

// ===============================
// CAMPO PARA VARIAÇÕES DE PRODUTO
// ===============================

// 3. Adiciona o campo nas variações
add_action('woocommerce_variation_options_pricing', 'adicionar_campo_preco_custo_variacoes', 10, 3);
function adicionar_campo_preco_custo_variacoes($loop, $variation_data, $variation) {
    woocommerce_wp_text_input(array(
        'id' => '_preco_custo[' . $loop . ']',
        'label' => 'Preço de Custo',
        'value' => get_post_meta($variation->ID, '_preco_custo', true),
        'type' => 'number',
        'custom_attributes' => array(
            'step' => '0.01',
            'min' => '0'
        ),
        'wrapper_class' => 'form-row form-row-full'
    ));
}

// 4. Salva o valor das variações
add_action('woocommerce_save_product_variation', 'salvar_campo_preco_custo_variacoes', 10, 2);
function salvar_campo_preco_custo_variacoes($variation_id, $i) {
    if (isset($_POST['_preco_custo'][$i])) {
        update_post_meta($variation_id, '_preco_custo', wc_clean($_POST['_preco_custo'][$i]));
    }
}


add_filter('woocommerce_webhook_payload', 'adicionar_total_preco_custo_ao_webhook', 10, 4);

function adicionar_total_preco_custo_ao_webhook($payload, $resource, $resource_id, $webhook_id) {
    if ($resource !== 'order') {
        return $payload;
    }

    $order = wc_get_order($resource_id);
    $total_preco_custo = 0;

    foreach ($order->get_items() as $item) {
        $product = $item->get_product();
        if ($product) {
            $preco_custo = get_post_meta($product->get_id(), '_preco_custo', true);
            $total_preco_custo += floatval($preco_custo);
        }
    }

    // Adiciona o total ao payload do webhook com a nova chave
    $payload['total_preco_custo'] = round($total_preco_custo, 2);

    return $payload;
}

