<?php

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

// =============================================================================
// FUNÇÕES PARA AS COLUNAS PERSONALIZADAS
// =============================================================================

add_filter('manage_impulsionamento_posts_columns', 'imz_add_impulsionamento_custom_columns');
add_action('manage_impulsionamento_posts_custom_column', 'imz_display_impulsionamento_custom_column', 10, 2);
add_filter('manage_imz_takedown_posts_columns', 'imz_add_takedown_custom_columns');
add_action('manage_imz_takedown_posts_custom_column', 'imz_display_takedown_custom_column', 10, 2);
add_filter('manage_imz_subscription_posts_columns', 'imz_add_subscription_custom_columns');
add_action('manage_imz_subscription_posts_custom_column', 'imz_display_subscription_custom_column', 10, 2);

// Colunas para Impulsionamento
function imz_add_impulsionamento_custom_columns($columns) {
    $columns['status'] = 'Status';
    $columns['musica'] = 'Música';
    return $columns;
}

function imz_display_impulsionamento_custom_column($column, $post_id) {
    if ($column == 'status') {
        $status = get_post_meta($post_id, 'status', true);
        echo '<span class="imz-admin-status status-' . esc_attr($status) . '">' . esc_html(ucfirst($status)) . '</span>';
    }
    if ($column == 'musica') {
        $post_id_original = get_post_meta($post_id, 'post_id_original', true);
        if ($post_id_original) {
            echo '<a href="' . get_edit_post_link($post_id_original) . '" target="_blank">' . get_the_title($post_id_original) . '</a>';
        } else {
            echo '—';
        }
    }
}

// Colunas para Takedown (Proteção)
function imz_add_takedown_custom_columns($columns) {
    $columns['music'] = 'Música';
    $columns['artist'] = 'Artista';
    $columns['status'] = 'Status';
    return $columns;
}

function imz_display_takedown_custom_column($column, $post_id) {
    switch ($column) {
        case 'music':
            $music_id = get_post_meta($post_id, '_music_id', true);
            if ($music_id) {
                echo '<a href="' . get_edit_post_link($music_id) . '">' . get_the_title($music_id) . '</a>';
            }
            break;
        case 'artist':
            $artist_id = get_post_field('post_author', $post_id);
            $artist = get_user_by('id', $artist_id);
            if ($artist) {
                echo '<a href="' . get_edit_user_link($artist_id) . '">' . esc_html($artist->display_name) . '</a>';
            }
            break;
        case 'status':
            $status = get_post_meta($post_id, '_takedown_status', true);
            echo '<strong>' . esc_html(ucfirst(str_replace('-', ' ', $status))) . '</strong>';
            break;
    }
}

// Colunas para Subscrição PRO
function imz_add_subscription_custom_columns($columns) {
    $columns['artist'] = 'Artista';
    $columns['status'] = 'Status';
    return $columns;
}

function imz_display_subscription_custom_column($column, $post_id) {
    switch ($column) {
        case 'artist':
            $artist_id = get_post_meta($post_id, 'artist_id', true);
            $artist = get_user_by('id', $artist_id);
            if ($artist) {
                echo '<a href="' . get_edit_user_link($artist_id) . '">' . esc_html($artist->display_name) . '</a>';
            }
            break;
        case 'status':
            $status = get_post_meta($post_id, 'status', true);
            echo '<strong>' . esc_html(ucfirst($status)) . '</strong>';
            break;
    }
}


// =============================================================================
// FUNÇÕES DE FILTRO E WIDGETS
// =============================================================================

add_action('restrict_manage_posts', 'imz_add_impulsionamento_status_filter');
add_filter('parse_query', 'imz_parse_impulsionamento_filter_query');
add_action('wp_dashboard_setup', 'imz_add_dashboard_widget');
add_action('admin_footer', 'imz_add_modern_datepicker_styles'); // Mantido apenas o datepicker aqui

// Filtro de Status na Lista
function imz_add_impulsionamento_status_filter() {
    global $typenow;
    if ($typenow == 'impulsionamento') {
        $status = isset($_GET['filtro_status']) ? $_GET['filtro_status'] : '';
        echo '<select name="filtro_status"><option value="">— Filtrar por status —</option>';
        echo '<option value="pendente"' . selected($status, 'pendente', false) . '>Pendente</option>';
        echo '<option value="aprovado"' . selected($status, 'aprovado', false) . '>Aprovado</option>';
        echo '<option value="recusado"' . selected($status, 'recusado', false) . '>Recusado</option>';
        echo '</select>';
    }
}

function imz_parse_impulsionamento_filter_query($query) {
    global $pagenow;
    if (is_admin() && $query->is_main_query() && $pagenow == 'edit.php' && isset($_GET['post_type']) && $_GET['post_type'] == 'impulsionamento' && !empty($_GET['filtro_status'])) {
        $query->set('meta_key', 'status');
        $query->set('meta_value', $_GET['filtro_status']);
    }
}

// Widget do Dashboard (Resumo)
function imz_add_dashboard_widget() {
    wp_add_dashboard_widget('imz_pending_boosts_widget', 'Impulsionamentos Pendentes', 'imz_render_dashboard_widget_content');
}

function imz_render_dashboard_widget_content() {
    $query_args = [
        'post_type' => 'impulsionamento',
        'post_status' => 'publish',
        'posts_per_page' => 5,
        'meta_query' => [['key' => 'status', 'value' => 'pendente']],
        'orderby' => 'date',
        'order' => 'DESC'
    ];
    $pending_boosts = new WP_Query($query_args);

    if ($pending_boosts->have_posts()) {
        $total_pending = $pending_boosts->found_posts;
        echo '<p><strong>Você tem ' . $total_pending . ' impulsionamento(s) aguardando aprovação.</strong></p><ul>';
        while ($pending_boosts->have_posts()) {
            $pending_boosts->the_post();
            $boost_id = get_the_ID();
            $music_id = get_post_meta($boost_id, 'post_id_original', true);
            
            // Remove filtro temporariamente para o título limpo
            remove_filter('the_title', 'imz_add_verified_badge_to_title', 10, 2);
            $music_title = $music_id ? get_the_title($music_id) : 'Música não encontrada';
            add_filter('the_title', 'imz_add_verified_badge_to_title', 10, 2);

            $user_name = get_post_meta($boost_id, 'nome', true);
            $amount = get_post_meta($boost_id, 'valor', true);
            $edit_link = get_edit_post_link($boost_id);

            echo '<li style="margin-bottom: 10px; padding-bottom: 10px; border-bottom: 1px solid #eee;">';
            echo '<strong>Música:</strong> ' . esc_html($music_title) . '<br>';
            if ($user_name) {
                echo '<strong>De:</strong> ' . esc_html($user_name) . ' (' . esc_html($amount) . ' MT)<br>';
            } else {
                echo '<strong>Valor:</strong> ' . esc_html($amount) . ' MT<br>';
            }
            echo '<a href="' . esc_url($edit_link) . '" class="button button-small">Ver Detalhes</a></li>';
        }
        echo '</ul>';
    } else {
        echo '<p style="color: #22c55e; font-weight: bold;">Tudo em ordem! Não há impulsionamentos pendentes.</p>';
    }
    wp_reset_postdata();
    echo '<p style="text-align: right; margin-top: 15px;"><a href="' . admin_url('edit.php?post_type=impulsionamento') . '" class="button button-primary">Ver Todos</a></p>';
}

// Estilos do Datepicker (Mantido aqui pois é específico de inputs de data no admin)
function imz_add_modern_datepicker_styles() {
    global $pagenow;
    if ($pagenow == 'post.php' || $pagenow == 'post-new.php') {
        ?>
        <style>
            /* Estilos básicos para garantir que o datepicker do jQuery UI fique bonito */
            /* (A maior parte dos estilos foi movida para admin.css, mas isto garante estrutura básica se o CSS falhar) */
            .ui-datepicker { z-index: 9999 !important; }
        </style>
        <?php
    }
}

// NOTA: A função imz_add_admin_status_styles foi removida pois os estilos
// agora estão centralizados em assets/admin.css
?>