<?php
// includes/admin/admin-menus.php

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Acesso direto bloqueado
}

// 1. INCLUIR O NOVO FICHEIRO DE ESTATÍSTICAS E O PERFIL VIP
require_once RMBZ_PLUGIN_PATH . 'includes/admin/admin-platform-overview.php';
require_once RMBZ_PLUGIN_PATH . 'includes/admin/admin-download-logs.php';
require_once RMBZ_PLUGIN_PATH . 'includes/admin/admin-user-profile.php'; 

/**
 * Regista todas as páginas de administração (submenus) do plugin.
 */
function rmbz_adicionar_paginas_admin() {
    
    global $wpdb;
    
    // -------------------------------------------------------------------------
    // 1. CONTAGENS PARA NOTIFICAÇÕES (BOLHAS VERMELHAS) - COM CACHE
    // -------------------------------------------------------------------------
    $counts = get_transient( 'rmbz_admin_notification_counts' );

    if ( false === $counts ) {
        $table_submissions = $wpdb->prefix . 'rmbz_artist_submissions';
        $table_deposits    = $wpdb->prefix . 'rmbz_deposit_requests';
        $table_withdrawals = $wpdb->prefix . 'rmbz_withdrawal_requests';
        $table_projects    = $wpdb->prefix . 'rmbz_artist_projects'; // Tabela de Projetos adicionada

        $site_count   = (int) $wpdb->get_var( "SELECT COUNT(id) FROM {$table_submissions} WHERE review_status = 'pendente' AND scenario_type = 'Publicação Site'" );
        $social_count = (int) $wpdb->get_var( "SELECT COUNT(id) FROM {$table_submissions} WHERE review_status = 'pendente' AND scenario_type = 'Redes Sociais'" );
        $dep_count    = (int) $wpdb->get_var("SELECT COUNT(id) FROM {$table_deposits} WHERE status = 'pendente'");
        $lev_count    = (int) $wpdb->get_var("SELECT COUNT(id) FROM {$table_withdrawals} WHERE status = 'pendente'");
        // Conta projetos novos E projetos que estão à espera de validação do BI (KYC)
        $proj_count   = (int) $wpdb->get_var("SELECT COUNT(id) FROM {$table_projects} WHERE production_status IN ('pending_review', 'kyc_review')");

        // [1.5.200] Conta mensagens de chat não-lidas pelo admin (table só
        // existe a partir de 1.5.193 — guard para casos de cold install).
        $table_chat = $wpdb->prefix . 'rmbz_project_chat_messages';
        $chat_unread = 0;
        $chat_unread_projects = 0;
        if ( $wpdb->get_var( $wpdb->prepare( "SHOW TABLES LIKE %s", $table_chat ) ) === $table_chat ) {
            $chat_unread = (int) $wpdb->get_var(
                "SELECT COUNT(id) FROM {$table_chat}
                 WHERE read_by_admin = 0 AND author_type = 'artist' AND is_deleted = 0"
            );
            $chat_unread_projects = (int) $wpdb->get_var(
                "SELECT COUNT(DISTINCT project_id) FROM {$table_chat}
                 WHERE read_by_admin = 0 AND author_type = 'artist' AND is_deleted = 0"
            );
        }

        $counts = [
            'site'                  => $site_count,
            'social'                => $social_count,
            'deposits'              => $dep_count,
            'withdrawals'           => $lev_count,
            'projects'              => $proj_count,
            'chat_unread'           => $chat_unread,
            'chat_unread_projects'  => $chat_unread_projects,
        ];
        
        set_transient( 'rmbz_admin_notification_counts', $counts, 2 * MINUTE_IN_SECONDS );
    }

    // -------------------------------------------------------------------------
    // 2. CRIAR TÍTULOS COM BOLHAS HTML
    // -------------------------------------------------------------------------
    // [1.5.200] Garantir compat se transient veio de versão antiga sem as chaves
    if ( ! isset( $counts['chat_unread'] ) )          $counts['chat_unread'] = 0;
    if ( ! isset( $counts['chat_unread_projects'] ) ) $counts['chat_unread_projects'] = 0;

    $bubble_site          = ($counts['site'] > 0) ? ' <span class="awaiting-mod count-'.$counts['site'].'"><span class="pending-count">'.$counts['site'].'</span></span>' : '';
    $bubble_social        = ($counts['social'] > 0) ? ' <span class="awaiting-mod count-'.$counts['social'].'"><span class="pending-count">'.$counts['social'].'</span></span>' : '';
    $bubble_depositos     = ($counts['deposits'] > 0) ? ' <span class="awaiting-mod count-'.$counts['deposits'].'"><span class="pending-count">'.$counts['deposits'].'</span></span>' : '';
    $bubble_levantamentos = ($counts['withdrawals'] > 0) ? ' <span class="awaiting-mod count-'.$counts['withdrawals'].'"><span class="pending-count">'.$counts['withdrawals'].'</span></span>' : '';

    // [1.5.200] Bubble combinado: projetos pendentes + projetos com mensagens
    // não-lidas pelo admin. O artista pode ter enviado mensagem em projeto
    // que já passou a 'filming' por exemplo — admin precisa de atenção
    // independente do estado.
    $projetos_total = $counts['projects'] + $counts['chat_unread_projects'];
    $bubble_projetos = ($projetos_total > 0) ? ' <span class="awaiting-mod count-'.$projetos_total.'"><span class="pending-count">'.$projetos_total.'</span></span>' : '';

    // -------------------------------------------------------------------------
    // 3. REGISTAR PÁGINAS DE MENU
    // -------------------------------------------------------------------------
    
    // Menu Principal (Top Level) - AGORA APONTA PARA O DASHBOARD DE ESTATÍSTICAS
    add_menu_page(
        '1MZ Manager', 
        '1MZ Manager', 
        'manage_options', 
        'rmbz-dashboard', 
        'rmbz_render_admin_analytics_page', 
        'dashicons-chart-area', // Ícone de Gráfico
        6
    );

    // Submenus Visíveis
    add_submenu_page('rmbz-dashboard', 'Visão Geral', 'Visão Geral', 'manage_options', 'rmbz-dashboard', 'rmbz_render_admin_analytics_page');
    add_submenu_page('rmbz-dashboard', 'Envios para Site', 'Música (Site)' . $bubble_site, 'manage_options', 'rmbz-envios-site', 'rmbz_pagina_envios_site');
    add_submenu_page('rmbz-dashboard', 'Vídeos Redes Sociais', 'Vídeos (Redes)' . $bubble_social, 'manage_options', 'rmbz-envios-social', 'rmbz_pagina_envios_social');
    add_submenu_page('rmbz-dashboard', 'Pacotes VIP', 'Pacotes VIP', 'manage_options', 'rmbz-pacotes', 'rmbz_mostrar_pagina_pacotes');
    
    // A bolha vermelha foi adicionada aqui em baixo! 👇
    add_submenu_page('rmbz-dashboard', 'Gestão de Projetos', 'Projetos & Chat' . $bubble_projetos, 'manage_options', 'rmbz-projetos', 'onemz_mostrar_pagina_projetos');
    
    add_submenu_page('rmbz-dashboard', 'Gestão de Artistas', 'Artistas & Saldos', 'manage_options', 'rmbz-utilizadores', 'rmbz_mostrar_pagina_utilizadores');
    add_submenu_page('rmbz-dashboard', 'Gestão de Distribuição', 'Distribuição 🌍', 'manage_options', 'rmbz-admin-distribution', 'rmbz_render_admin_distribution_wrapper');
    add_submenu_page('rmbz-dashboard', 'Aprovar Depósitos', 'Depósitos' . $bubble_depositos, 'manage_options', 'rmbz-depositos', 'rmbz_mostrar_pagina_depositos');
    add_submenu_page('rmbz-dashboard', 'Pedidos de Levantamento', 'Levantamentos' . $bubble_levantamentos, 'manage_options', 'rmbz-pedidos-levantamento', 'rmbz_mostrar_pagina_pedidos_levantamento');
    add_submenu_page('rmbz-dashboard', 'Gestão de Cupões', 'Cupões 🎟️', 'manage_options', 'rmbz-cupoes', 'rmbz_mostrar_pagina_cupoes');
    add_submenu_page('rmbz-dashboard', 'Configurações do Sistema', 'Configurações', 'manage_options', 'rmbz-settings', 'rmbz_display_settings_page');

    // -------------------------------------------------------------------------
    // 4. PÁGINAS ESCONDIDAS (Ações de Sistema sem menu visível)
    // -------------------------------------------------------------------------
    $hidden_slug = 'rmbz-hidden-menu';
    
    add_submenu_page($hidden_slug, 'Ajustar Saldo', 'Ajustar Saldo', 'manage_options', 'rmbz-ajustar-saldo', 'rmbz_mostrar_pagina_ajuste_saldo');
    add_submenu_page($hidden_slug, 'Histórico do Artista', 'Histórico', 'manage_options', 'rmbz-historico-utilizador', 'rmbz_mostrar_pagina_historico_utilizador');
    add_submenu_page($hidden_slug, 'Editar Bloqueio', 'Editar Bloqueio', 'manage_options', 'rmbz-editar-bloqueio', 'rmbz_mostrar_pagina_editar_bloqueio');
    add_submenu_page($hidden_slug, 'Redefinir PIN', 'Redefinir PIN', 'manage_options', 'rmbz-redefinir-pin', 'rmbz_mostrar_pagina_redefinir_pin');
}

add_action( 'admin_menu', 'rmbz_adicionar_paginas_admin' );