<?php
session_start();
require_once 'config.php';

$pdo = getConexaoAtiva(); // Banco Principal (Xtream ou XUI)
$pdo_int = getConexaoInterna(); // Banco Local (Configs)

$pdo->exec("SET NAMES utf8mb4");
$pdo_int->exec("SET NAMES utf8mb4");

// ====================================================================
// INTELIGÊNCIA ARTIFICIAL: DETECTA SE É XUI ONE OU XTREAM UI
// ====================================================================
$modo_ativo = 'interno';
try {
    $modo_ativo = $pdo_int->query("SELECT modo_ativo FROM configuracoes LIMIT 1")->fetchColumn() ?: 'interno';
} catch (Exception $e) {}

// O XUI One usa as tabelas com o prefixo 'streams_' (plural)
$tabela_series = ($modo_ativo === 'xui') ? '`streams_series`' : '`series`';
$tabela_categorias = ($modo_ativo === 'xui') ? '`streams_categories`' : '`stream_categories`';


// --- INÍCIO: BUSCA DE PERSONALIZAÇÃO DINÂMICA ---
$nome_painel = 'TOP IPTV';
$logo_url = '';
$cor_primaria = '#007bff';

try {
    $tabela_existe = $pdo_int->query("SHOW TABLES LIKE 'painel_config'")->rowCount() > 0;
    if ($tabela_existe) {
        $config_painel = $pdo_int->query("SELECT * FROM painel_config LIMIT 1")->fetch(PDO::FETCH_ASSOC);
        if ($config_painel) {
            $nome_painel = !empty($config_painel['nome_painel']) ? $config_painel['nome_painel'] : $nome_painel;
            $logo_url = !empty($config_painel['logo_url']) ? $config_painel['logo_url'] : $logo_url;
            $cor_primaria = !empty($config_painel['cor_primaria']) ? $config_painel['cor_primaria'] : $cor_primaria;
        }
    }
} catch (Exception $e) {}
// --- FIM: BUSCA DE PERSONALIZAÇÃO DINÂMICA ---

if (!isset($_SESSION['user_id'])) { header("Location: login.php"); exit; }

$role = $_SESSION['user_role'];
$nome_usuario = $_SESSION['username'];
$user_id_logado = $_SESSION['user_id'];
$mensagem = "";

// Busca créditos do usuário para o menu lateral
try {
    $user_credits = $pdo_int->query("SELECT credits FROM reg_users WHERE id = " . intval($user_id_logado))->fetchColumn() ?: 0;
} catch (Exception $e) { 
    $user_credits = 0; 
}

define('TMDB_API_KEY', 'f99aa9ae1fe7619969cc7db0938c1ae5');

// --- CAPTURA DE FILTROS E PAGINAÇÃO ---
$cat_filter = $_GET['category'] ?? 'todos';
$limit_filter = isset($_GET['limit']) ? (int)$_GET['limit'] : 20;
$search_filter = $_GET['search'] ?? '';
$paged = isset($_GET['paged']) ? (int)$_GET['paged'] : 1;
if ($paged < 1) $paged = 1;
$offset = ($paged - 1) * $limit_filter;

// --- PROCESSAMENTO DE AÇÕES (SÉRIE) ---

if (isset($_POST['action_save_series'])) {
    $title = $_POST['title'];
    $cover = $_POST['cover'] ?? '';
    $plot = $_POST['plot'] ?? '';
    $cat_id = $_POST['category_id'] ?? 0;
    $id_serie = $_POST['series_id'] ?? null;

    if (!empty($id_serie)) {
        $sql = "UPDATE $tabela_series SET title = ?, cover = ?, plot = ?, category_id = ? WHERE id = ?";
        $res = $pdo->prepare($sql)->execute([$title, $cover, $plot, $cat_id, $id_serie]);
    } else {
        $sql = "INSERT INTO $tabela_series (title, cover, plot, category_id, last_modified) VALUES (?, ?, ?, ?, ?)";
        $res = $pdo->prepare($sql)->execute([$title, $cover, $plot, $cat_id, time()]);
    }
    if($res) $mensagem = "<div class='alert success'>Série salva com sucesso!</div>";
}

if (isset($_GET['delete_series'])) {
    $pdo->prepare("DELETE FROM $tabela_series WHERE id = ?")->execute([$_GET['delete_series']]);
    header("Location: series.php"); exit;
}

// BUSCA CATEGORIAS DE SÉRIES (Modo Inteligente)
$categorias = $pdo->query("SELECT id as category_id, category_name FROM $tabela_categorias WHERE category_type = 'series' ORDER BY category_name ASC")->fetchAll(PDO::FETCH_ASSOC);

// --- CONSTRUÇÃO DA QUERY COM FILTROS ---
$where = " WHERE 1=1";
if ($cat_filter !== 'todos') {
    $where .= " AND s.category_id = " . (int)$cat_filter;
}
if (!empty($search_filter)) {
    $where .= " AND s.title LIKE " . $pdo->quote("%$search_filter%");
}

// CONTAGEM TOTAL PARA PAGINAÇÃO
$total_registros = $pdo->query("SELECT COUNT(*) FROM $tabela_series s $where")->fetchColumn();
$total_paginas = ceil($total_registros / $limit_filter);

// BUSCA SÉRIES COM LIMIT E OFFSET (Modo Inteligente)
$query = "SELECT s.*, c.category_name 
          FROM $tabela_series s 
          LEFT JOIN $tabela_categorias c ON s.category_id = c.id 
          $where
          ORDER BY s.id DESC LIMIT $limit_filter OFFSET $offset";
$series = $pdo->query($query)->fetchAll(PDO::FETCH_ASSOC);
?>

<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <link rel="stylesheet" href="tema.css">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <title>Séries - <?php echo htmlspecialchars($nome_painel); ?></title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <style>
        :root { 
            --bg-dark: #0f1114; 
            --bg-sidebar: #1e2227; 
            --bg-card: #272c33; 
            --text-main: #d1d5da; 
            --text-muted: #8a94a1; 
            --accent: <?php echo $cor_primaria; ?>; 
            --border-color: #3a4149; 
            --success: #28a745; 
            --danger: #dc3545; 
        }
        body { margin: 0; font-family: 'Segoe UI', sans-serif; background-color: var(--bg-dark); color: var(--text-main); display: flex; height: 100vh; overflow: hidden; }

        /* CSS OBRIGATÓRIO PARA A LOGO E MENU (Evita o bug da logo gigante) */
        .sidebar { width: 260px; background-color: var(--bg-sidebar); border-right: 1px solid var(--border-color); display: flex; flex-direction: column; transition: all 0.3s ease; z-index: 1001; flex-shrink: 0; }
        .sidebar-header { padding: 25px 20px; text-align: center; font-size: 22px; font-weight: bold; border-bottom: 1px solid var(--border-color); color: white; }
        .sidebar-logo { width: 100%; max-width: 180px; height: auto; max-height: 60px; object-fit: contain; display: block; margin: 0 auto; }
        
        .user-info { padding: 20px; text-align: center; border-bottom: 1px solid var(--border-color); }
        .user-info .badge { background: rgba(255, 255, 255, 0.05); color: var(--accent); padding: 4px 10px; border-radius: 4px; font-size: 11px; text-transform: uppercase; font-weight: bold; margin-top: 5px; display: inline-block; }
        .credits-badge { display: block; margin-top: 10px; color: var(--success); font-weight: bold; font-size: 13px; }
        
        .menu-list { list-style: none; padding: 0; margin: 0; flex: 1; overflow-y: auto; }
        .menu-item { padding: 14px 25px; color: var(--text-main); text-decoration: none; display: flex; align-items: center; transition: 0.2s; font-size: 15px; border-left: 4px solid transparent; cursor: pointer; }
        .menu-item i:first-child { margin-right: 15px; width: 20px; text-align: center; font-size: 16px; color: var(--text-muted); }
        .menu-item:hover, .menu-item.active { background: #2c3138; color: white; border-left-color: var(--accent); }
        .menu-item.active i { color: var(--accent); }
        
        .submenu { display: none; background: #121519; list-style: none; padding: 0; margin: 0; }
        .submenu .menu-item { padding-left: 52px; font-size: 14px; border-left: none; }
        .arrow-icon { margin-left: auto; transition: 0.3s; font-size: 12px; }
        .rotate { transform: rotate(180deg); }
        
        .menu-category { padding: 20px 25px 8px; font-size: 11px; text-transform: uppercase; color: var(--text-muted); font-weight: bold; letter-spacing: 1px; }
        .logout-btn { padding: 15px; background-color: var(--danger); color: white; text-align: center; text-decoration: none; font-weight: bold; margin-top: auto; }

        /* MAIN CONTENT */
        .main { flex: 1; overflow-y: auto; display: flex; flex-direction: column; width: 100%; position: relative; }
        .topbar { display: flex; justify-content: space-between; align-items: center; padding: 15px 30px; background-color: var(--bg-sidebar); border-bottom: 1px solid var(--border-color); }
        .menu-toggle { display: none; background: none; border: none; color: white; font-size: 24px; cursor: pointer; }
        .content-area { padding: 25px; flex: 1; }
        .mode-badge { padding: 6px 15px; background: rgba(40, 167, 69, 0.15); color: var(--success); border-radius: 20px; font-size: 12px; font-weight: bold; border: 1px solid var(--success); white-space: nowrap; display: inline-block; }

        /* FILTROS */
        .filter-bar { background: var(--bg-card); padding: 15px; border-radius: 10px; border: 1px solid var(--border-color); margin-bottom: 20px; display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-end; }
        .filter-group { display: flex; flex-direction: column; gap: 5px; flex: 1; min-width: 150px; }
        .filter-group label { font-size: 11px; color: var(--text-muted); text-transform: uppercase; font-weight: bold; }
        .filter-bar input, .filter-bar select { background: #121519; border: 1px solid var(--border-color); color: white; padding: 10px; border-radius: 5px; font-size: 13px; width: 100%; box-sizing: border-box; }
        .btn-filter { background: var(--accent); color: white; border: none; padding: 10px 20px; border-radius: 5px; cursor: pointer; font-weight: bold; }
        .btn-filter:hover { filter: brightness(0.85); }

        /* GRID */
        .grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 20px; margin-top: 20px; }
        .serie-card { background: var(--bg-card); border-radius: 8px; border: 1px solid var(--border-color); overflow: hidden; position: relative; transition: 0.3s; }
        .serie-poster { width: 100%; height: 260px; object-fit: cover; background: #000; }
        .serie-info { padding: 10px; }
        .serie-title { font-size: 13px; font-weight: bold; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: white; }
        .serie-cat-name { font-size: 10px; color: var(--accent); font-weight: bold; text-transform: uppercase; margin-bottom: 3px; display: block; }

        .serie-actions { position: absolute; top: 5px; right: 5px; display: flex; flex-direction: column; gap: 5px; opacity: 0; transition: 0.3s; z-index: 10; }
        .serie-card:hover .serie-actions { opacity: 1; }
        .btn-act { width: 32px; height: 32px; border-radius: 6px; border: none; color: white; cursor: pointer; display: flex; align-items: center; justify-content: center; font-size: 14px; text-decoration: none; }
        .bg-edit { background: rgba(52, 152, 219, 0.9); }
        .bg-manage { background: rgba(46, 204, 113, 0.9); }
        .bg-delete { background: rgba(231, 76, 60, 0.9); }

        /* PAGINAÇÃO */
        .pagination { display: flex; justify-content: center; align-items: center; gap: 5px; margin: 30px 0; }
        .page-link { padding: 8px 16px; background: var(--bg-card); border: 1px solid var(--border-color); color: white; text-decoration: none; border-radius: 5px; font-weight: bold; font-size: 13px; }
        .page-link:hover, .page-link.active { background: var(--accent); border-color: var(--accent); }

        /* MODAL */
        .modal { display: none; position: fixed; z-index: 2000; left: 0; top: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.9); overflow-y: auto; }
        .modal-content { background: var(--bg-card); width: 95%; max-width: 450px; margin: 5% auto; padding: 25px; border-radius: 12px; border: 1px solid var(--border-color); position: relative; }
        .form-group { margin-bottom: 12px; }
        .form-group label { display: block; margin-bottom: 4px; font-size: 12px; color: var(--text-muted); }
        .form-group input, .form-group select, .form-group textarea { width: 100%; padding: 10px; background: #121519; border: 1px solid var(--border-color); color: white; border-radius: 5px; box-sizing: border-box; font-size: 14px; }
        
        .tmdb-results { margin-top: 10px; max-height: 180px; overflow-y: auto; background: #121519; border-radius: 5px; }
        .tmdb-item { display: flex; gap: 10px; padding: 8px; border-bottom: 1px solid var(--border-color); cursor: pointer; align-items: center; font-size: 13px; }
        .tmdb-item:hover { background: #24282d; }
        .tmdb-item img { width: 35px; height: 50px; object-fit: cover; }

        .btn-blue { background: var(--accent); color: white; border: none; padding: 12px; border-radius: 8px; font-weight: bold; cursor: pointer; width: 100%; }
        .sidebar-overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.7); z-index: 1000; }
        .alert { padding: 15px; border-radius: 6px; margin-bottom: 20px; text-align: center; background: rgba(40, 167, 69, 0.1); color: var(--success); border: 1px solid var(--success); }

        /* --- RESPONSIVIDADE MOBILE --- */
        @media (max-width: 768px) {
            .menu-toggle { display: block; margin-right: 15px; }
            .sidebar { position: fixed; left: -260px; height: 100%; width: 260px; box-shadow: 10px 0 20px rgba(0,0,0,0.5); }
            .sidebar.active { left: 0; }
            .sidebar-overlay.active { display: block; }
            .topbar { padding: 10px 15px; }
            .topbar-right { margin-left: auto; }
            .topbar h2 { display: none; }
            .content-area { padding: 15px; }
            .filter-bar { flex-direction: column; align-items: stretch; }
            .grid { grid-template-columns: repeat(2, 1fr); gap: 10px; }
            .serie-poster { height: 220px; }
            .serie-actions { opacity: 1; }
        }
    </style>
</head>
<body>

    <div class="sidebar-overlay" id="overlay" onclick="toggleMenu()"></div>

    <?php include 'sidebar.php'; ?>

    <div class="main">
        <header class="topbar">
            <div style="display: flex; align-items: center;">
                <button class="menu-toggle" id="btn-menu" onclick="toggleMenu()"><i class="fas fa-bars"></i></button>
                <h2 style="margin:0; color: white;">Séries (VOD)</h2>
            </div>
            <div class="topbar-right">
                <span class="mode-badge"><i class="fas fa-database"></i> <?php echo defined('MODO_SISTEMA') ? strtoupper(MODO_SISTEMA) : strtoupper($modo_ativo); ?></span>
            </div>
        </header>

        <div class="content-area">
            <div style="display:flex; justify-content:flex-end; align-items:center; margin-bottom:20px;">
                <button class="btn-blue" style="width:auto; padding:10px 20px; background: var(--success);" onclick="openModalAdd()">+ NOVA SÉRIE</button>
            </div>

            <form class="filter-bar" method="GET">
                <div class="filter-group">
                    <label>Pesquisar</label>
                    <input type="text" name="search" value="<?php echo htmlspecialchars($search_filter); ?>" placeholder="Nome da série...">
                </div>
                <div class="filter-group">
                    <label>Categoria</label>
                    <select name="category">
                        <option value="todos">Todas as Categorias</option>
                        <?php foreach($categorias as $cat): ?>
                            <option value="<?php echo $cat['category_id']; ?>" <?php echo $cat_filter == $cat['category_id'] ? 'selected' : ''; ?>>
                                <?php echo htmlspecialchars($cat['category_name']); ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                </div>
                <div class="filter-group">
                    <label>Exibir</label>
                    <select name="limit">
                        <?php 
                        $opcoes = [10, 20, 50, 100, 250, 500, 1000, 2000, 5000];
                        foreach($opcoes as $op) {
                            $sel = ($limit_filter == $op) ? 'selected' : '';
                            echo "<option value='$op' $sel>$op por página</option>";
                        }
                        ?>
                    </select>
                </div>
                <button type="submit" class="btn-filter"><i class="fas fa-filter"></i> FILTRAR</button>
            </form>

            <?php echo $mensagem; ?>

            <div class="grid">
                <?php foreach($series as $s): ?>
                <div class="serie-card">
                    <div class="serie-actions">
                        <button class="btn-act bg-edit" title="Editar" onclick='openModalEdit(<?php echo htmlspecialchars(json_encode($s), ENT_QUOTES, "UTF-8"); ?>)'><i class="fas fa-pencil-alt"></i></button>
                        <a href="episodios.php?series_id=<?php echo $s['id']; ?>" class="btn-act bg-manage" title="Temporadas e Episódios"><i class="fas fa-list-ol"></i></a>
                        <a href="?delete_series=<?php echo $s['id']; ?>" class="btn-act bg-delete" onclick="return confirm('Excluir série?')"><i class="fas fa-trash"></i></a>
                    </div>
                    <img src="<?php echo htmlspecialchars($s['cover'] ?: 'https://via.placeholder.com/170x240?text=Sem+Capa'); ?>" class="serie-poster">
                    <div class="serie-info">
                        <span class="serie-cat-name"><?php echo htmlspecialchars($s['category_name'] ?? 'Sem Categoria'); ?></span>
                        <div class="serie-title"><?php echo htmlspecialchars($s['title']); ?></div>
                    </div>
                </div>
                <?php endforeach; if(empty($series)) echo "<p style='padding:20px;'>Nenhuma série encontrada.</p>"; ?>
            </div>

            <?php if($total_paginas > 1): ?>
            <div class="pagination">
                <?php 
                $url_params = "search=" . urlencode($search_filter) . "&category=$cat_filter&limit=$limit_filter";
                if($paged > 1): ?>
                    <a href="?<?php echo $url_params; ?>&paged=<?php echo $paged - 1; ?>" class="page-link">« Anterior</a>
                <?php endif; ?>
                <span style="color:var(--text-muted); margin:0 10px; font-size:13px;">Página <?php echo $paged; ?> de <?php echo $total_paginas; ?></span>
                <?php if($paged < $total_paginas): ?>
                    <a href="?<?php echo $url_params; ?>&paged=<?php echo $paged + 1; ?>" class="page-link">Próxima »</a>
                <?php endif; ?>
            </div>
            <?php endif; ?>
        </div>
        <?php include 'rodape.php'; ?>
    </div>

    <div id="modalSerie" class="modal">
        <div class="modal-content">
            <h3 id="modalTitle" style="margin-top:0;">Nova Série</h3>
            <form method="POST">
                <input type="hidden" name="series_id" id="series_id">
                <div class="form-group">
                    <label>Título da Série</label>
                    <div style="display:flex; gap:5px;">
                        <input type="text" id="serie_search_input" name="title" placeholder="Ex: The Last of Us" required>
                        <button type="button" class="btn-blue" style="width:auto; border-radius:5px;" onclick="searchTMDBSeries()"><i class="fas fa-search"></i></button>
                    </div>
                </div>
                <div id="tmdb_results" class="tmdb-results"></div>
                
                <div class="form-group">
                    <label>Categoria</label>
                    <select name="category_id" id="field_cat">
                        <?php foreach($categorias as $cat): ?>
                            <option value="<?php echo $cat['category_id']; ?>"><?php echo htmlspecialchars($cat['category_name']); ?></option>
                        <?php endforeach; ?>
                    </select>
                </div>
                
                <div class="form-group">
                    <label>URL da Capa</label>
                    <input type="text" name="cover" id="field_cover">
                </div>
                <div class="form-group">
                    <label>Sinopse</label>
                    <textarea name="plot" id="field_plot" rows="4"></textarea>
                </div>
                
                <button type="submit" name="action_save_series" class="btn-blue">SALVAR SÉRIE</button>
                <button type="button" onclick="closeModal()" style="background:none; border:none; color:var(--text-muted); width:100%; margin-top:10px; cursor:pointer;">Cancelar</button>
            </form>
        </div>
    </div>

    <script>
        function toggleMenu() {
            document.getElementById('sidebar').classList.toggle('active');
            document.getElementById('overlay').classList.toggle('active');
        }

        function toggleSubmenu(id) {
            const sub = document.getElementById(id);
            const arrow = document.getElementById('arrow-' + id);
            if (sub.style.display === "block") {
                sub.style.display = "none";
                if(arrow) arrow.classList.remove('rotate');
            } else {
                sub.style.display = "block";
                if(arrow) arrow.classList.add('rotate');
            }
        }

        function openModalAdd() {
            document.getElementById('modalTitle').innerText = "Nova Série";
            document.getElementById('series_id').value = "";
            document.getElementById('serie_search_input').value = "";
            document.getElementById('field_cover').value = "";
            document.getElementById('field_plot').value = "";
            document.getElementById('tmdb_results').innerHTML = "";
            document.getElementById('modalSerie').style.display = 'block';
        }

        function openModalEdit(s) {
            document.getElementById('modalTitle').innerText = "Editar Série";
            document.getElementById('series_id').value = s.id;
            document.getElementById('serie_search_input').value = s.title;
            document.getElementById('field_cover').value = s.cover;
            document.getElementById('field_plot').value = s.plot;
            document.getElementById('field_cat').value = s.category_id;
            document.getElementById('modalSerie').style.display = 'block';
        }

        function closeModal() { document.getElementById('modalSerie').style.display = 'none'; }

        async function searchTMDBSeries() {
            let query = document.getElementById('serie_search_input').value;
            if(!query) return;
            const url = `https://api.themoviedb.org/3/search/tv?api_key=<?php echo TMDB_API_KEY; ?>&query=${encodeURIComponent(query)}&language=pt-BR`;
            try {
                const res = await fetch(url);
                const data = await res.json();
                let html = "";
                data.results.slice(0, 5).forEach(s => {
                    html += `<div class="tmdb-item" onclick="selectSerie('${s.name.replace(/'/g, "\\'")}', 'https://image.tmdb.org/t/p/w500${s.poster_path}', '${s.overview.replace(/'/g, "\\'").replace(/\n/g, " ")}')">
                        <img src="https://image.tmdb.org/t/p/w92${s.poster_path}">
                        <div><strong>${s.name}</strong><br><small>${s.first_air_date ? s.first_air_date.split('-')[0] : ''}</small></div>
                    </div>`;
                });
                document.getElementById('tmdb_results').innerHTML = html || "<p style='color:red; padding:10px;'>Nada encontrado.</p>";
            } catch(e) { console.log(e); }
        }

        function selectSerie(title, cover, plot) {
            document.getElementById('serie_search_input').value = title;
            document.getElementById('field_cover').value = cover;
            document.getElementById('field_plot').value = plot;
            document.getElementById('tmdb_results').innerHTML = "";
        }
    </script>
    <script src="tema.js"></script>
</body>
</html>