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

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

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

// --- 1. LISTAR CATEGORIAS ---
if ($action == 'list') {
    $type = $_POST['type'] ?? 'channel';
    // Ordena pelo order_id ASC para respeitar a ordem salva
    $stmt = $pdo->prepare("SELECT * FROM categories WHERE type = ? ORDER BY order_id ASC, id ASC");
    $stmt->execute([$type]);
    $cats = $stmt->fetchAll(PDO::FETCH_ASSOC);
    echo json_encode($cats);
    exit;
}

// --- 2. SALVAR (CRIAR OU EDITAR) ---
if ($action == 'save') {
    $id = $_POST['id'] ?? '';
    $name = trim($_POST['name']);
    $type = $_POST['type'];

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

    if ($id) {
        // Editar
        $stmt = $pdo->prepare("UPDATE categories SET name = ? WHERE id = ?");
        $stmt->execute([$name, $id]);
    } else {
        // Criar Nova (Pega o maior order_id para colocar no final)
        $stmt = $pdo->prepare("SELECT MAX(order_id) FROM categories WHERE type = ?");
        $stmt->execute([$type]);
        $max = $stmt->fetchColumn();
        $nextOrder = $max ? $max + 1 : 0;

        $stmt = $pdo->prepare("INSERT INTO categories (name, type, order_id) VALUES (?, ?, ?)");
        $stmt->execute([$name, $type, $nextOrder]);
    }
    echo json_encode(['status'=>true]);
    exit;
}

// --- 3. EXCLUIR ---
if ($action == 'delete') {
    $id = $_POST['id'];
    
    // Opcional: Verificar se tem canais dentro antes de apagar
    // $chk = $pdo->query("SELECT count(*) FROM channels WHERE category_id = $id")->fetchColumn();
    // if($chk > 0) { echo json_encode(['status'=>false, 'msg'=>'Categoria não está vazia!']); exit; }

    $stmt = $pdo->prepare("DELETE FROM categories WHERE id = ?");
    $stmt->execute([$id]);
    echo json_encode(['status'=>true]);
    exit;
}

// --- 4. REORDENAR (SALVAR ORDEM) ---
if ($action == 'reorder') {
    $orderList = $_POST['order']; // Recebe array [id1, id2, id3...]
    
    if (is_array($orderList)) {
        foreach ($orderList as $position => $catId) {
            $stmt = $pdo->prepare("UPDATE categories SET order_id = ? WHERE id = ?");
            $stmt->execute([$position, $catId]);
        }
        echo json_encode(['status'=>true, 'msg'=>'Ordem salva!']);
    } else {
        echo json_encode(['status'=>false, 'msg'=>'Erro nos dados']);
    }
    exit;
}
?>
