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

if (!isset($_SESSION['user_id'])) { echo json_encode(['status'=>false, 'msg'=>'Sessão expirada']); exit; }

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

// --- 1. APAGAR TUDO (RESET TOTAL) ---
if ($action == 'wipe_all') {
    try {
        $pdo->exec("SET FOREIGN_KEY_CHECKS = 0");
        
        $pdo->exec("TRUNCATE TABLE channels");
        $pdo->exec("TRUNCATE TABLE movies");
        $pdo->exec("TRUNCATE TABLE series");
        $pdo->exec("TRUNCATE TABLE seasons");
        $pdo->exec("TRUNCATE TABLE episodes");
        $pdo->exec("TRUNCATE TABLE categories"); // Apaga categorias também como você pediu
        
        $pdo->exec("SET FOREIGN_KEY_CHECKS = 1");
        
        echo json_encode(['status'=>true, 'msg'=>'Painel resetado com sucesso!']);
    } catch (Exception $e) {
        echo json_encode(['status'=>false, 'msg'=>'Erro ao limpar: '.$e->getMessage()]);
    }
    exit;
}

// --- 2. LISTAR CATEGORIAS COM CONTAGEM ---
if ($action == 'list_categories') {
    // Busca categorias e conta quantos itens tem dentro de cada uma
    $sql = "
        SELECT c.id, c.name, c.type,
        (CASE 
            WHEN c.type = 'channel' THEN (SELECT COUNT(*) FROM channels WHERE category_id = c.id)
            WHEN c.type = 'movie' THEN (SELECT COUNT(*) FROM movies WHERE category_id = c.id)
            WHEN c.type = 'series' THEN (SELECT COUNT(*) FROM series WHERE category_id = c.id)
            ELSE 0 
        END) as count
        FROM categories c
        ORDER BY c.type, c.name
    ";
    $cats = $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
    echo json_encode($cats);
    exit;
}

// --- 3. APAGAR CATEGORIA E TUDO DENTRO DELA ---
if ($action == 'delete_category') {
    $id = $_POST['id'];
    $type = $_POST['type']; // channel, movie, series

    try {
        $pdo->beginTransaction();

        if ($type == 'channel') {
            // Apaga canais desta categoria
            $stmt = $pdo->prepare("DELETE FROM channels WHERE category_id = ?");
            $stmt->execute([$id]);
        }
        elseif ($type == 'movie') {
            // Apaga filmes desta categoria
            $stmt = $pdo->prepare("DELETE FROM movies WHERE category_id = ?");
            $stmt->execute([$id]);
        }
        elseif ($type == 'series') {
            // SÉRIES É COMPLEXO: Precisa apagar Episódios -> Temporadas -> Séries
            
            // 1. Apaga Episódios das séries desta categoria
            $pdo->exec("DELETE e FROM episodes e 
                        INNER JOIN seasons s ON e.season_id = s.id 
                        INNER JOIN series ser ON s.series_id = ser.id 
                        WHERE ser.category_id = $id");

            // 2. Apaga Temporadas das séries desta categoria
            $pdo->exec("DELETE s FROM seasons s 
                        INNER JOIN series ser ON s.series_id = ser.id 
                        WHERE ser.category_id = $id");

            // 3. Apaga as Séries em si
            $stmt = $pdo->prepare("DELETE FROM series WHERE category_id = ?");
            $stmt->execute([$id]);
        }

        // Por fim, apaga a Categoria
        $stmt = $pdo->prepare("DELETE FROM categories WHERE id = ?");
        $stmt->execute([$id]);

        $pdo->commit();
        echo json_encode(['status'=>true, 'msg'=>'Categoria e conteúdos apagados!']);

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