<?php
// api/mover_api.php
session_start();
require_once '../includes/db.php';
header('Content-Type: application/json');

// Desativa exibição de erros no corpo da resposta
ini_set('display_errors', 0);
error_reporting(E_ALL);

// 1. VERIFICAÇÃO DE ADMIN (Segurança por ID 1)
$is_admin = (isset($_SESSION['user_id']) && $_SESSION['user_id'] == 1);
if (!$is_admin) {
    // Fallback: verifica role no banco se não for ID 1
    try {
        $stmt = $pdo->prepare("SELECT role FROM revendedores WHERE id = ?");
        $stmt->execute([$_SESSION['user_id']]);
        if ($stmt->fetchColumn() === 'admin') $is_admin = true;
    } catch(Exception $e){}
}

if (!$is_admin) { echo json_encode(['status'=>false, 'msg'=>'Acesso negado.']); exit; }

$action = $_REQUEST['action'] ?? '';

try {
    // --- 1. BUSCAR CATEGORIAS ---
    if ($action == 'get_categories') {
        $frontend_type = $_GET['type']; // 'live', 'movie', 'series'
        
        // Mapeia o tipo do front para o tipo do banco (tabela 'categories')
        $db_type = '';
        if ($frontend_type == 'live')   $db_type = 'channel'; // No seu banco está 'channel'
        if ($frontend_type == 'movie')  $db_type = 'movie';
        if ($frontend_type == 'series') $db_type = 'series';

        if (!$db_type) { echo json_encode([]); exit; }

        // Busca na tabela correta 'categories'
        $sql = "SELECT id, name FROM categories WHERE type = ? ORDER BY name ASC";
        $stmt = $pdo->prepare($sql);
        $stmt->execute([$db_type]);
        
        echo json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));
        exit;
    }

    // --- 2. BUSCAR CONTEÚDO (Canais/Filmes) ---
    if ($action == 'get_content') {
        $type = $_GET['type'];
        $cat_id = $_GET['cat_id'];

        // Define a tabela e a coluna de nome baseado no tipo
        $sql = "";
        if ($type == 'live') {
            // Tenta buscar canais. Se der erro de coluna 'name', tente 'stream_display_name'
            $sql = "SELECT id, name FROM channels WHERE category_id = ? ORDER BY name ASC";
        } elseif ($type == 'movie') {
            $sql = "SELECT id, name FROM movies WHERE category_id = ? ORDER BY name ASC";
        } elseif ($type == 'series') {
            // Séries geralmente usam 'title' ou 'name'
            $sql = "SELECT id, title AS name FROM series WHERE category_id = ? ORDER BY title ASC";
        }

        if (!$sql) { echo json_encode([]); exit; }

        try {
            $stmt = $pdo->prepare($sql);
            $stmt->execute([$cat_id]);
            echo json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));
        } catch (Exception $e) {
            // Se der erro (ex: tabela não existe), retorna array vazio para não travar
            // Dica: Se não aparecer nada, pode ser que o nome da coluna seja diferente (ex: stream_display_name)
            echo json_encode([]); 
        }
        exit;
    }

    // --- 3. MOVER ---
    if ($action == 'move') {
        $type = $_POST['type'];
        $target_cat = $_POST['target_cat'];
        $ids = $_POST['ids'] ?? [];

        if (empty($ids)) { echo json_encode(['status'=>false, 'msg'=>'Nada selecionado.']); exit; }
        if (empty($target_cat)) { echo json_encode(['status'=>false, 'msg'=>'Selecione o destino.']); exit; }

        // Define a tabela de destino
        $table = "";
        if ($type == 'live') $table = "channels";
        elseif ($type == 'movie') $table = "movies";
        elseif ($type == 'series') $table = "series";

        if (!$table) { echo json_encode(['status'=>false, 'msg'=>'Tipo inválido.']); exit; }

        // Monta os placeholders (?,?,?)
        $in = str_repeat('?,', count($ids) - 1) . '?';
        $params = array_merge([$target_cat], $ids);

        $sql = "UPDATE $table SET category_id = ? WHERE id IN ($in)";
        $stmt = $pdo->prepare($sql);
        $stmt->execute($params);

        echo json_encode(['status'=>true, 'msg'=> count($ids) . ' itens movidos com sucesso!']);
        exit;
    }

} catch (Exception $e) {
    echo json_encode(['status'=>false, 'msg'=>'Erro SQL: ' . $e->getMessage()]);
}
?>
