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

// Verificação de Segurança
if (!isset($_SESSION['user_id'])) { 
    echo json_encode(['status'=>false, 'msg'=>'Login expirado. Faça login novamente.']); 
    exit; 
}

$action = $_POST['action'] ?? $_GET['action'] ?? '';

// ====================================================================
//                          GERENCIAR CANAIS
// ====================================================================

if ($action == 'save_channel') {
    $id = $_POST['id'];
    $name = $_POST['name'];
    $url = $_POST['stream_url'];
    $logo = $_POST['logo_url'];
    $cat = (int)$_POST['category_id'];

    try {
        if(empty($id)) {
            // Criar Novo
            $pdo->prepare("INSERT INTO channels (name, stream_url, logo_url, category_id) VALUES (?, ?, ?, ?)")->execute([$name, $url, $logo, $cat]);
            echo json_encode(['status'=>true, 'msg'=>'Canal criado com sucesso!']);
        } else {
            // Editar Existente
            $pdo->prepare("UPDATE channels SET name=?, stream_url=?, logo_url=?, category_id=? WHERE id=?")->execute([$name, $url, $logo, $cat, $id]);
            echo json_encode(['status'=>true, 'msg'=>'Canal atualizado!']);
        }
    } catch(Exception $e) { echo json_encode(['status'=>false, 'msg'=>'Erro ao salvar canal.']); }
}

if ($action == 'delete_channel') {
    $id = $_POST['id'];
    try {
        $pdo->prepare("DELETE FROM channels WHERE id=?")->execute([$id]);
        echo json_encode(['status'=>true, 'msg'=>'Canal deletado!']);
    } catch(Exception $e) { echo json_encode(['status'=>false, 'msg'=>'Erro ao deletar.']); }
}

if ($action == 'get_channel') {
    $stmt = $pdo->prepare("SELECT * FROM channels WHERE id=?");
    $stmt->execute([$_GET['id']]);
    echo json_encode(['status'=>true, 'data'=>$stmt->fetch(PDO::FETCH_ASSOC)]);
}

// ====================================================================
//                          GERENCIAR FILMES
// ====================================================================

if ($action == 'save_movie') {
    $id = $_POST['id'];
    $name = $_POST['name'];
    $url = $_POST['stream_url'];
    $cover = $_POST['cover_url'];
    $desc = $_POST['description'];
    $cat = (int)$_POST['category_id'];

    try {
        if(empty($id)) {
            $pdo->prepare("INSERT INTO movies (name, stream_url, cover_url, description, category_id) VALUES (?, ?, ?, ?, ?)")->execute([$name, $url, $cover, $desc, $cat]);
            echo json_encode(['status'=>true, 'msg'=>'Filme salvo com sucesso!']);
        } else {
            $pdo->prepare("UPDATE movies SET name=?, stream_url=?, cover_url=?, description=?, category_id=? WHERE id=?")->execute([$name, $url, $cover, $desc, $cat, $id]);
            echo json_encode(['status'=>true, 'msg'=>'Filme atualizado!']);
        }
    } catch(Exception $e) { echo json_encode(['status'=>false, 'msg'=>'Erro ao salvar filme.']); }
}

if ($action == 'delete_movie') {
    $id = $_POST['id'];
    try {
        $pdo->prepare("DELETE FROM movies WHERE id=?")->execute([$id]);
        echo json_encode(['status'=>true, 'msg'=>'Filme deletado!']);
    } catch(Exception $e) { echo json_encode(['status'=>false, 'msg'=>'Erro ao deletar.']); }
}

if ($action == 'get_movie') {
    $stmt = $pdo->prepare("SELECT * FROM movies WHERE id=?");
    $stmt->execute([$_GET['id']]);
    echo json_encode(['status'=>true, 'data'=>$stmt->fetch(PDO::FETCH_ASSOC)]);
}

// ====================================================================
//                          GERENCIAR SÉRIES
// ====================================================================

if ($action == 'save_series') {
    $id = $_POST['id'];
    $name = $_POST['name'];
    $cover = $_POST['cover_url'];
    $desc = $_POST['description'];
    $cat = (int)$_POST['category_id'];

    try {
        if(empty($id)) {
            $pdo->prepare("INSERT INTO series (name, cover_url, description, category_id) VALUES (?, ?, ?, ?)")->execute([$name, $cover, $desc, $cat]);
            echo json_encode(['status'=>true, 'msg'=>'Série criada com sucesso!']);
        } else {
            $pdo->prepare("UPDATE series SET name=?, cover_url=?, description=?, category_id=? WHERE id=?")->execute([$name, $cover, $desc, $cat, $id]);
            echo json_encode(['status'=>true, 'msg'=>'Série atualizada!']);
        }
    } catch(Exception $e) { echo json_encode(['status'=>false, 'msg'=>'Erro ao salvar série.']); }
}

if ($action == 'delete_series') {
    $id = $_POST['id'];
    try {
        // Idealmente deletaria temporadas e episódios em cascata, mas o básico apaga a série
        $pdo->prepare("DELETE FROM series WHERE id=?")->execute([$id]);
        echo json_encode(['status'=>true, 'msg'=>'Série deletada!']);
    } catch(Exception $e) { echo json_encode(['status'=>false, 'msg'=>'Erro ao deletar.']); }
}

if ($action == 'get_series') {
    $stmt = $pdo->prepare("SELECT * FROM series WHERE id=?");
    $stmt->execute([$_GET['id']]);
    echo json_encode(['status'=>true, 'data'=>$stmt->fetch(PDO::FETCH_ASSOC)]);
}

// ====================================================================
//                          GERENCIAR TEMPORADAS
// ====================================================================

if ($action == 'save_season') {
    $series_id = $_POST['series_id'];
    $name = $_POST['name'];
    
    try {
        $pdo->prepare("INSERT INTO seasons (series_id, name) VALUES (?, ?)")->execute([$series_id, $name]);
        echo json_encode(['status'=>true, 'msg'=>'Temporada criada!']);
    } catch(Exception $e) { echo json_encode(['status'=>false, 'msg'=>'Erro ao criar temporada.']); }
}

if ($action == 'delete_season') {
    $id = $_POST['id'];
    try {
        // Primeiro apaga os episódios da temporada
        $pdo->prepare("DELETE FROM episodes WHERE season_id=?")->execute([$id]);
        // Depois apaga a temporada
        $pdo->prepare("DELETE FROM seasons WHERE id=?")->execute([$id]);
        echo json_encode(['status'=>true, 'msg'=>'Temporada e episódios removidos!']);
    } catch(Exception $e) { echo json_encode(['status'=>false, 'msg'=>'Erro ao deletar.']); }
}

if ($action == 'get_seasons') {
    $stmt = $pdo->prepare("SELECT * FROM seasons WHERE series_id=? ORDER BY id ASC");
    $stmt->execute([$_GET['series_id']]);
    echo json_encode(['status'=>true, 'data'=>$stmt->fetchAll(PDO::FETCH_ASSOC)]);
}

// ====================================================================
//                          GERENCIAR EPISÓDIOS
// ====================================================================

if ($action == 'save_episode') {
    $id = $_POST['id'] ?? '';
    $season_id = $_POST['season_id'];
    $name = $_POST['name'];
    $url = $_POST['stream_url'];
    $cover = $_POST['cover_url']; // Opcional

    try {
        if(!empty($id)) {
            // Editar
            $pdo->prepare("UPDATE episodes SET name=?, stream_url=?, cover_url=? WHERE id=?")->execute([$name, $url, $cover, $id]);
            echo json_encode(['status'=>true, 'msg'=>'Episódio atualizado!']);
        } else {
            // Criar
            $pdo->prepare("INSERT INTO episodes (season_id, name, stream_url, cover_url) VALUES (?, ?, ?, ?)")->execute([$season_id, $name, $url, $cover]);
            echo json_encode(['status'=>true, 'msg'=>'Episódio adicionado!']);
        }
    } catch(Exception $e) { echo json_encode(['status'=>false, 'msg'=>'Erro ao salvar episódio.']); }
}

if ($action == 'delete_episode') {
    $pdo->prepare("DELETE FROM episodes WHERE id=?")->execute([$_POST['id']]);
    echo json_encode(['status'=>true, 'msg'=>'Episódio deletado!']);
}

if ($action == 'get_episodes') {
    $stmt = $pdo->prepare("SELECT * FROM episodes WHERE season_id=? ORDER BY id ASC");
    $stmt->execute([$_GET['season_id']]);
    echo json_encode(['status'=>true, 'data'=>$stmt->fetchAll(PDO::FETCH_ASSOC)]);
}

if ($action == 'get_single_episode') {
    $stmt = $pdo->prepare("SELECT * FROM episodes WHERE id=?");
    $stmt->execute([$_GET['id']]);
    echo json_encode(['status'=>true, 'data'=>$stmt->fetch(PDO::FETCH_ASSOC)]);
}

// ====================================================================
//                          GERENCIAR CATEGORIAS
// ====================================================================

if ($action == 'save_category') {
    $name = $_POST['name'];
    $type = $_POST['type']; // channel, movie, series

    try {
        $pdo->prepare("INSERT INTO categories (name, type) VALUES (?, ?)")->execute([$name, $type]);
        echo json_encode(['status'=>true, 'msg'=>'Categoria criada!']);
    } catch(Exception $e) { echo json_encode(['status'=>false, 'msg'=>'Erro ao criar categoria.']); }
}
?>
