<?php
// api/bouquets_api.php - Versão Corrigida (Mapeamento de Tipos)
header('Content-Type: application/json');
session_start();
require_once '../includes/db.php';

if (!isset($_SESSION['logged_in_fxtream'])) { die(json_encode(['status'=>false, 'msg'=>'Acesso negado'])); }

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

switch($action) {
    
    // LISTAR PACOTES
    case 'list':
        $stmt = $pdo->query("SELECT * FROM bouquets ORDER BY id DESC");
        echo json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));
    break;

    // BUSCAR DADOS (Categorias para o Modal)
    case 'get_data':
        // Prepara os arrays vazios
        $cats = ['live' => [], 'movie' => [], 'series' => []];
        
        try {
            $stmt = $pdo->query("SELECT id, name, type FROM categories ORDER BY name ASC");
            while($r = $stmt->fetch(PDO::FETCH_ASSOC)) {
                // Converte para minúsculo para facilitar a comparação
                $t = strtolower((string)$r['type']); 
                
                // LÓGICA INTELIGENTE DE MAPEAMENTO
                // Verifica variações comuns de nomes para cada tipo
                
                // 1. SÉRIES
                if(in_array($t, ['series', 'serie', 'seriado', 'tv series'])) {
                    $cats['series'][] = $r;
                } 
                // 2. FILMES
                elseif(in_array($t, ['movie', 'vod', 'filme', 'movies', 'filmes'])) {
                    $cats['movie'][] = $r;
                } 
                // 3. CANAIS (LIVE) - Pega 'live', 'stream' ou se estiver VAZIO (comum em alguns painéis)
                elseif(in_array($t, ['live', 'channel', 'stream', 'tv', 'iptv', 'live stream']) || empty($t)) {
                    $cats['live'][] = $r;
                }
                // Se sobrar algo desconhecido, joga em Canais por segurança
                else {
                    $cats['live'][] = $r;
                }
            }
        } catch(Exception $e) {
            // Em caso de erro (tabela não existe, etc), retorna arrays vazios para não travar
        }
        
        // Se for edição, busca os dados do pacote
        $bouquet = null;
        if(isset($_GET['id'])) {
            $stmt = $pdo->prepare("SELECT * FROM bouquets WHERE id = ?");
            $stmt->execute([$_GET['id']]);
            $bouquet = $stmt->fetch(PDO::FETCH_ASSOC);
        }

        echo json_encode(['categories' => $cats, 'bouquet' => $bouquet]);
    break;

    // SALVAR
    case 'save':
        $id = $_POST['id'];
        $name = trim($_POST['name']);
        
        // Recebe arrays de IDs e converte para JSON
        $channels = isset($_POST['ch_cats']) ? json_encode($_POST['ch_cats']) : '[]';
        $movies   = isset($_POST['mov_cats']) ? json_encode($_POST['mov_cats']) : '[]';
        $series   = isset($_POST['ser_cats']) ? json_encode($_POST['ser_cats']) : '[]';

        if(empty($name)) { echo json_encode(['status'=>false, 'msg'=>'Nome obrigatório']); exit; }

        if(empty($id)) {
            $sql = "INSERT INTO bouquets (name, bouq_channels, bouq_movies, bouq_series) VALUES (?, ?, ?, ?)";
            $stmt = $pdo->prepare($sql);
            $res = $stmt->execute([$name, $channels, $movies, $series]);
        } else {
            $sql = "UPDATE bouquets SET name=?, bouq_channels=?, bouq_movies=?, bouq_series=? WHERE id=?";
            $stmt = $pdo->prepare($sql);
            $res = $stmt->execute([$name, $channels, $movies, $series, $id]);
        }

        if($res) echo json_encode(['status'=>true, 'msg'=>'Pacote salvo com sucesso!']);
        else echo json_encode(['status'=>false, 'msg'=>'Erro ao salvar']);
    break;

    // APAGAR
    case 'delete':
        $pdo->prepare("DELETE FROM bouquets WHERE id = ?")->execute([$_POST['id']]);
        echo json_encode(['status'=>true, 'msg'=>'Pacote removido']);
    break;
}
?>
