<?php
include 'verifica_login.php';
include 'conexao.php';
include 'config/cliente_projeto_utils.php';
$conn = conectar_banco();
garantir_estrutura_clientes_projetos($conn);

// Desabilitar warnings do PHP para JSON
error_reporting(E_ALL & ~E_WARNING);

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

// ========== AJAX: Obter categorias disponíveis ==========
if ($action === 'get_categorias' && isset($_GET['id_template'])) {
    header('Content-Type: application/json');
    $id_template = (int)$_GET['id_template'];
    
    $stmt = $conn->prepare("SELECT DISTINCT categoria FROM questionario_template_perguntas WHERE id_questionario_template_fk = ? AND categoria IS NOT NULL AND categoria != '' ORDER BY categoria");
    $stmt->bind_param('i', $id_template);
    $stmt->execute();
    $result = $stmt->get_result();
    
    $categorias = [];
    while ($row = $result->fetch_assoc()) {
        $categorias[] = $row['categoria'];
    }
    
    echo json_encode(['success' => true, 'categorias' => $categorias]);
    exit;
}

// ========== AJAX: Obter próximo número de pergunta ==========
if ($action === 'get_next_question_number' && isset($_GET['id_template'])) {
    header('Content-Type: application/json');
    $id_template = (int)$_GET['id_template'];
    $id_pai = isset($_GET['id_pai']) ? (int)$_GET['id_pai'] : 0;
    
    if ($id_pai > 0) {
        // Sub-pergunta: buscar o número do pai e calcular o próximo sub-número
        $stmt_pai = $conn->prepare("SELECT numero FROM questionario_template_perguntas WHERE id = ?");
        $stmt_pai->bind_param('i', $id_pai);
        $stmt_pai->execute();
        $pai_row = $stmt_pai->get_result()->fetch_assoc();
        $numero_pai = $pai_row ? $pai_row['numero'] : '0';
        
        // Buscar sub-perguntas existentes deste pai
        $stmt = $conn->prepare("SELECT numero FROM questionario_template_perguntas WHERE id_questionario_template_fk = ? AND id_pergunta_pai = ? ORDER BY numero ASC");
        $stmt->bind_param('ii', $id_template, $id_pai);
        $stmt->execute();
        $result = $stmt->get_result();
        
        $max_sub = 0;
        while ($row = $result->fetch_assoc()) {
            $partes = explode('.', $row['numero']);
            if (count($partes) >= 2) {
                $sub_num = (int)end($partes);
                if ($sub_num > $max_sub) $max_sub = $sub_num;
            }
        }
        
        $proximo = $numero_pai . '.' . ($max_sub + 1);
        echo json_encode(['success' => true, 'proximo_numero' => $proximo]);
    } else {
        // Pergunta principal: buscar o maior número inteiro
        $stmt = $conn->prepare("SELECT numero FROM questionario_template_perguntas WHERE id_questionario_template_fk = ? AND (id_pergunta_pai IS NULL OR id_pergunta_pai = 0) ORDER BY CAST(numero AS UNSIGNED) DESC LIMIT 1");
        $stmt->bind_param('i', $id_template);
        $stmt->execute();
        $result = $stmt->get_result()->fetch_assoc();
        
        $max_num = $result ? (int)$result['numero'] : 0;
        echo json_encode(['success' => true, 'proximo_numero' => $max_num + 1]);
    }
    exit;
}

// ========== AJAX: Buscar dados de uma pergunta ==========
if ($action === 'get_question' && isset($_GET['id'])) {
    header('Content-Type: application/json');
    $id = (int)$_GET['id'];
    
    $stmt = $conn->prepare("SELECT * FROM questionario_template_perguntas WHERE id = ?");
    $stmt->bind_param('i', $id);
    $stmt->execute();
    $result = $stmt->get_result();
    
    if ($result->num_rows > 0) {
        echo json_encode(['success' => true, 'question' => $result->fetch_assoc()]);
    } else {
        echo json_encode(['success' => false, 'message' => 'Pergunta não encontrada']);
    }
    exit;
}

// ========== CRIAR NOVO TEMPLATE ==========
if ($action === 'create') {
    $nome = $_POST['nome'] ?? '';
    $id_projeto_fk = (int)($_POST['id_projeto_fk'] ?? 0);
    $descricao = $_POST['descricao'] ?? '';
    $introducao = $_POST['introducao'] ?? '';
    $mensagem_fechamento = $_POST['mensagem_fechamento'] ?? '';
    
    if (empty($nome)) {
        header('Location: montagem_questionario.php?msg=error&detalhe=Nome é obrigatório');
        exit;
    }

    if ($id_projeto_fk <= 0) {
        header('Location: montagem_questionario.php?msg=error&detalhe=' . urlencode('Selecione o projeto do questionário.'));
        exit;
    }
    
    $stmt = $conn->prepare("INSERT INTO questionario_template (nome, id_projeto_fk, descricao, introducao, mensagem_fechamento, ativo) VALUES (?, ?, ?, ?, ?, 'S')");
    $stmt->bind_param('sisss', $nome, $id_projeto_fk, $descricao, $introducao, $mensagem_fechamento);
    
    if ($stmt->execute()) {
        $id = $conn->insert_id;
        header('Location: editar_questionario_template.php?id=' . $id . '&msg=success');
    } else {
        header('Location: montagem_questionario.php?msg=error&detalhe=' . urlencode($conn->error));
    }
    exit;
}

// ========== ATUALIZAR TEMPLATE ==========
if ($action === 'update_template') {
    $id = (int)$_POST['id'];
    $nome = $_POST['nome'] ?? '';
    $descricao = $_POST['descricao'] ?? '';
    $introducao = $_POST['introducao'] ?? '';
    $mensagem_fechamento = $_POST['mensagem_fechamento'] ?? '';
    
    if (empty($nome)) {
        header('Location: editar_questionario_template.php?id=' . $id . '&msg=error&detalhe=Nome é obrigatório');
        exit;
    }
    
    $stmt = $conn->prepare("UPDATE questionario_template SET nome = ?, descricao = ?, introducao = ?, mensagem_fechamento = ? WHERE id = ?");
    $stmt->bind_param('ssssi', $nome, $descricao, $introducao, $mensagem_fechamento, $id);
    
    if ($stmt->execute()) {
        header('Location: editar_questionario_template.php?id=' . $id . '&msg=success');
    } else {
        header('Location: editar_questionario_template.php?id=' . $id . '&msg=error&detalhe=' . urlencode($conn->error));
    }
    exit;
}

// ========== ALTERNAR STATUS DO TEMPLATE ==========
if ($action === 'toggle_status') {
    $id = (int)$_POST['id'];
    $status = $_POST['status'] === 'S' ? 'S' : 'N';
    
    $stmt = $conn->prepare("UPDATE questionario_template SET ativo = ? WHERE id = ?");
    $stmt->bind_param('si', $status, $id);
    
    if ($stmt->execute()) {
        header('Location: montagem_questionario.php?msg=success');
    } else {
        header('Location: montagem_questionario.php?msg=error&detalhe=' . urlencode($conn->error));
    }
    exit;
}

// ========== EXCLUIR TEMPLATE ==========
if ($action === 'delete') {
    $id = (int)$_POST['id'];
    
    $stmt = $conn->prepare("DELETE FROM questionario_template WHERE id = ?");
    $stmt->bind_param('i', $id);
    
    if ($stmt->execute()) {
        header('Location: montagem_questionario.php?msg=success');
    } else {
        header('Location: montagem_questionario.php?msg=error&detalhe=' . urlencode($conn->error));
    }
    exit;
}

// ========== DUPLICAR TEMPLATE ==========
if ($action === 'duplicate') {
    $id = (int)$_POST['id'];
    
    // Buscar template original
    $stmt = $conn->prepare("SELECT * FROM questionario_template WHERE id = ?");
    $stmt->bind_param('i', $id);
    $stmt->execute();
    $original = $stmt->get_result()->fetch_assoc();
    
    if (!$original) {
        header('Location: montagem_questionario.php?msg=error&detalhe=' . urlencode('Template não encontrado'));
        exit;
    }
    
    // Gerar novo nome: "Nome Original cópia 2", "Nome Original cópia 3", etc
    $novo_nome = $original['nome'] . ' cópia';
    $contador = 2;
    
    // Verificar se já existem cópias e incrementar o número
    $stmt = $conn->prepare("SELECT COUNT(*) as total FROM questionario_template WHERE nome LIKE ?");
    $pattern = $original['nome'] . ' cópia%';
    $stmt->bind_param('s', $pattern);
    $stmt->execute();
    $resultado = $stmt->get_result()->fetch_assoc();
    
    if ($resultado['total'] > 0) {
        $contador = $resultado['total'] + 1;
    }
    
    $novo_nome = $original['nome'] . ' cópia ' . $contador;
    
    // Criar novo template
    $stmt = $conn->prepare("INSERT INTO questionario_template (nome, id_projeto_fk, descricao, introducao, mensagem_fechamento, ativo) VALUES (?, ?, ?, ?, ?, 'S')");
    $stmt->bind_param('sisss', $novo_nome, $original['id_projeto_fk'], $original['descricao'], $original['introducao'], $original['mensagem_fechamento']);
    
    if (!$stmt->execute()) {
        header('Location: montagem_questionario.php?msg=error&detalhe=' . urlencode($conn->error));
        exit;
    }
    
    $novo_id = $conn->insert_id;
    
    // Copiar perguntas do template original
    $stmt = $conn->prepare("SELECT * FROM questionario_template_perguntas WHERE id_questionario_template_fk = ? ORDER BY ordem");
    $stmt->bind_param('i', $id);
    $stmt->execute();
    $perguntas = $stmt->get_result();
    
    $mapa_ids = [];
    $perguntas_arr = [];
    while ($p = $perguntas->fetch_assoc()) {
        $perguntas_arr[] = $p;
    }
    
    foreach ($perguntas_arr as $pergunta) {
        $stmt_insert = $conn->prepare("INSERT INTO questionario_template_perguntas (id_questionario_template_fk, numero, titulo, categoria, pergunta, tipo_resposta, opcoes, nota_maxima, ordem, obrigatorio, id_pergunta_pai, id_opcao_gatilho) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
        $pai_temp = $pergunta['id_pergunta_pai'];
        $gatilho_temp = $pergunta['id_opcao_gatilho'];
        $stmt_insert->bind_param('iisssssdisii', 
            $novo_id,
            $pergunta['numero'],
            $pergunta['titulo'],
            $pergunta['categoria'],
            $pergunta['pergunta'],
            $pergunta['tipo_resposta'],
            $pergunta['opcoes'],
            $pergunta['nota_maxima'],
            $pergunta['ordem'],
            $pergunta['obrigatorio'],
            $pai_temp,
            $gatilho_temp
        );
        
        if (!$stmt_insert->execute()) {
            header('Location: montagem_questionario.php?msg=error&detalhe=' . urlencode('Erro ao copiar perguntas: ' . $conn->error));
            exit;
        }
        $mapa_ids[$pergunta['id']] = $conn->insert_id;
    }
    
    // Atualizar id_pergunta_pai das sub-perguntas copiadas
    foreach ($perguntas_arr as $pergunta) {
        if (!empty($pergunta['id_pergunta_pai']) && isset($mapa_ids[$pergunta['id_pergunta_pai']])) {
            $novo_pai = $mapa_ids[$pergunta['id_pergunta_pai']];
            $novo_filho = $mapa_ids[$pergunta['id']];
            $conn->query("UPDATE questionario_template_perguntas SET id_pergunta_pai = $novo_pai WHERE id = $novo_filho");
        }
    }
    
    header('Location: editar_questionario_template.php?id=' . $novo_id . '&msg=success&detalhe=' . urlencode('Questionário duplicado com sucesso!'));
    exit;
}

// ========== CRIAR NOVA PERGUNTA ==========
if ($action === 'create_question') {
    header('Content-Type: application/json');
    
    $id_template = (int)$_POST['id_template'];
    $numero = trim($_POST['numero'] ?? '1');
    $titulo = $_POST['titulo'] ?? '';
    $categoria = $_POST['categoria'] ?? '';
    $pergunta = $_POST['pergunta'] ?? '';
    $tipo_resposta = $_POST['tipo_resposta'] ?? '';
    $nota_maxima = max(0, (int)round((float)($_POST['nota_maxima'] ?? 0)));
    $obrigatorio = isset($_POST['obrigatorio']) && $_POST['obrigatorio'] === 'S' ? 'S' : 'N';
    
    // Validações
    if (empty($pergunta)) {
        echo json_encode(['success' => false, 'message' => 'A pergunta é obrigatória']);
        exit;
    }
    
    if (empty($tipo_resposta)) {
        echo json_encode(['success' => false, 'message' => 'Tipo de resposta é obrigatório']);
        exit;
    }
    
    if (empty($categoria)) {
        echo json_encode(['success' => false, 'message' => 'Categoria é obrigatória']);
        exit;
    }
    
    // Verificar se já existe pergunta com o mesmo número
    $stmt_check = $conn->prepare("SELECT id FROM questionario_template_perguntas WHERE id_questionario_template_fk = ? AND numero = ?");
    $stmt_check->bind_param('is', $id_template, $numero);
    $stmt_check->execute();
    if ($stmt_check->get_result()->num_rows > 0) {
        echo json_encode(['success' => false, 'message' => 'Já existe uma pergunta com o número ' . $numero]);
        exit;
    }
    
    // Processar opções se for tipo com opções
    $opcoes = null;
    if (in_array($tipo_resposta, ['radio', 'checkbox', 'select'])) {
        $opcao_textos = $_POST['opcao_texto'] ?? [];
        $opcao_notas = $_POST['opcao_nota'] ?? [];
        
        if (empty($opcao_textos)) {
            echo json_encode(['success' => false, 'message' => 'Adicione pelo menos uma opção de resposta']);
            exit;
        }
        
        $opcoes_array = [];
        for ($i = 0; $i < count($opcao_textos); $i++) {
            if (!empty($opcao_textos[$i])) {
                $opcoes_array[] = [
                    'texto' => $opcao_textos[$i],
                    'nota' => max(0, (int)round((float)($opcao_notas[$i] ?? 0)))
                ];
            }
        }
        
        if (!empty($opcoes_array)) {
            $opcoes = json_encode($opcoes_array, JSON_UNESCAPED_UNICODE);
        } else {
            echo json_encode(['success' => false, 'message' => 'Adicione pelo menos uma opção com texto']);
            exit;
        }
    } elseif ($tipo_resposta === 'campos_personalizados') {
        $campo_nomes = $_POST['campo_nome'] ?? [];
        $campo_tipos = $_POST['campo_tipo'] ?? [];
        $campo_notas = $_POST['campo_nota'] ?? [];
        
        if (empty($campo_nomes)) {
            echo json_encode(['success' => false, 'message' => 'Adicione pelo menos um campo personalizado']);
            exit;
        }
        
        $campos_array = [];
        for ($i = 0; $i < count($campo_nomes); $i++) {
            if (!empty(trim($campo_nomes[$i]))) {
                $campos_array[] = [
                    'nome' => trim($campo_nomes[$i]),
                    'tipo' => $campo_tipos[$i] ?? 'texto',
                    'nota' => max(0, (int)round((float)($campo_notas[$i] ?? 0)))
                ];
            }
        }
        
        if (!empty($campos_array)) {
            $opcoes = json_encode($campos_array, JSON_UNESCAPED_UNICODE);
        } else {
            echo json_encode(['success' => false, 'message' => 'Adicione pelo menos um campo com nome']);
            exit;
        }
    }
    
    // Buscar próxima ordem
    $stmt = $conn->prepare("SELECT COALESCE(MAX(ordem), 0) + 1 as proxima_ordem FROM questionario_template_perguntas WHERE id_questionario_template_fk = ?");
    $stmt->bind_param('i', $id_template);
    $stmt->execute();
    $ordem = $stmt->get_result()->fetch_assoc()['proxima_ordem'];
    
    $id_pergunta_pai = !empty($_POST['id_pergunta_pai']) ? (int)$_POST['id_pergunta_pai'] : null;
    $id_opcao_gatilho = isset($_POST['id_opcao_gatilho']) && $_POST['id_opcao_gatilho'] !== '' ? (int)$_POST['id_opcao_gatilho'] : null;
    
    $stmt = $conn->prepare("INSERT INTO questionario_template_perguntas (id_questionario_template_fk, numero, titulo, categoria, pergunta, tipo_resposta, opcoes, nota_maxima, ordem, obrigatorio, id_pergunta_pai, id_opcao_gatilho) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
    $stmt->bind_param('issssssdisii', $id_template, $numero, $titulo, $categoria, $pergunta, $tipo_resposta, $opcoes, $nota_maxima, $ordem, $obrigatorio, $id_pergunta_pai, $id_opcao_gatilho);
    
    if ($stmt->execute()) {
        echo json_encode(['success' => true, 'message' => 'Pergunta criada com sucesso', 'id' => $conn->insert_id]);
    } else {
        echo json_encode(['success' => false, 'message' => 'Erro ao criar pergunta: ' . $conn->error]);
    }
    exit;
}

// ========== ATUALIZAR PERGUNTA ==========
if ($action === 'update_question') {
    header('Content-Type: application/json');
    
    $id_pergunta = (int)$_POST['id_pergunta'];
    $id_template = (int)$_POST['id_template'];
    $numero = trim($_POST['numero'] ?? '1');
    $titulo = $_POST['titulo'] ?? '';
    $categoria = $_POST['categoria'] ?? '';
    $pergunta = $_POST['pergunta'] ?? '';
    $tipo_resposta = $_POST['tipo_resposta'] ?? '';
    $nota_maxima = max(0, (int)round((float)($_POST['nota_maxima'] ?? 0)));
    $obrigatorio = isset($_POST['obrigatorio']) && $_POST['obrigatorio'] === 'S' ? 'S' : 'N';
    
    // Validações
    if (empty($pergunta)) {
        echo json_encode(['success' => false, 'message' => 'A pergunta é obrigatória']);
        exit;
    }
    
    if (empty($tipo_resposta)) {
        echo json_encode(['success' => false, 'message' => 'Tipo de resposta é obrigatório']);
        exit;
    }
    
    if (empty($categoria)) {
        echo json_encode(['success' => false, 'message' => 'Categoria é obrigatória']);
        exit;
    }
    
    // Verificar se já existe outra pergunta com o mesmo número (exceto a atual)
    $stmt_check = $conn->prepare("SELECT id FROM questionario_template_perguntas WHERE id_questionario_template_fk = ? AND numero = ? AND id != ?");
    $stmt_check->bind_param('isi', $id_template, $numero, $id_pergunta);
    $stmt_check->execute();
    if ($stmt_check->get_result()->num_rows > 0) {
        echo json_encode(['success' => false, 'message' => 'Já existe outra pergunta com o número ' . $numero]);
        exit;
    }
    
    // Processar opções
    $opcoes = null;
    if (in_array($tipo_resposta, ['radio', 'checkbox', 'select'])) {
        $opcao_textos = $_POST['opcao_texto'] ?? [];
        $opcao_notas = $_POST['opcao_nota'] ?? [];
        
        if (empty($opcao_textos)) {
            echo json_encode(['success' => false, 'message' => 'Adicione pelo menos uma opção de resposta']);
            exit;
        }
        
        $opcoes_array = [];
        for ($i = 0; $i < count($opcao_textos); $i++) {
            if (!empty($opcao_textos[$i])) {
                $opcoes_array[] = [
                    'texto' => $opcao_textos[$i],
                    'nota' => max(0, (int)round((float)($opcao_notas[$i] ?? 0)))
                ];
            }
        }
        
        if (!empty($opcoes_array)) {
            $opcoes = json_encode($opcoes_array, JSON_UNESCAPED_UNICODE);
        } else {
            echo json_encode(['success' => false, 'message' => 'Adicione pelo menos uma opção com texto']);
            exit;
        }
    } elseif ($tipo_resposta === 'campos_personalizados') {
        $campo_nomes = $_POST['campo_nome'] ?? [];
        $campo_tipos = $_POST['campo_tipo'] ?? [];
        $campo_notas = $_POST['campo_nota'] ?? [];
        
        if (empty($campo_nomes)) {
            echo json_encode(['success' => false, 'message' => 'Adicione pelo menos um campo personalizado']);
            exit;
        }
        
        $campos_array = [];
        for ($i = 0; $i < count($campo_nomes); $i++) {
            if (!empty(trim($campo_nomes[$i]))) {
                $campos_array[] = [
                    'nome' => trim($campo_nomes[$i]),
                    'tipo' => $campo_tipos[$i] ?? 'texto',
                    'nota' => max(0, (int)round((float)($campo_notas[$i] ?? 0)))
                ];
            }
        }
        
        if (!empty($campos_array)) {
            $opcoes = json_encode($campos_array, JSON_UNESCAPED_UNICODE);
        } else {
            echo json_encode(['success' => false, 'message' => 'Adicione pelo menos um campo com nome']);
            exit;
        }
    }
    
    $id_pergunta_pai = !empty($_POST['id_pergunta_pai']) ? (int)$_POST['id_pergunta_pai'] : null;
    $id_opcao_gatilho = isset($_POST['id_opcao_gatilho']) && $_POST['id_opcao_gatilho'] !== '' ? (int)$_POST['id_opcao_gatilho'] : null;
    
    $stmt = $conn->prepare("UPDATE questionario_template_perguntas SET numero = ?, titulo = ?, categoria = ?, pergunta = ?, tipo_resposta = ?, opcoes = ?, nota_maxima = ?, obrigatorio = ?, id_pergunta_pai = ?, id_opcao_gatilho = ? WHERE id = ?");
    $stmt->bind_param('ssssssdsiii', $numero, $titulo, $categoria, $pergunta, $tipo_resposta, $opcoes, $nota_maxima, $obrigatorio, $id_pergunta_pai, $id_opcao_gatilho, $id_pergunta);
    
    if ($stmt->execute()) {
        echo json_encode(['success' => true, 'message' => 'Pergunta atualizada com sucesso']);
    } else {
        echo json_encode(['success' => false, 'message' => 'Erro ao atualizar pergunta: ' . $conn->error]);
    }
    exit;
}

// ========== EXCLUIR PERGUNTA ==========
if ($action === 'delete_question') {
    $id = (int)$_POST['id'];
    $id_template = (int)$_POST['id_template'];
    
    $stmt = $conn->prepare("DELETE FROM questionario_template_perguntas WHERE id = ?");
    $stmt->bind_param('i', $id);
    
    if ($stmt->execute()) {
        // Reordenar perguntas restantes
        $conn->query("SET @ordem = 0");
        $stmt2 = $conn->prepare("UPDATE questionario_template_perguntas SET ordem = (@ordem := @ordem + 1) WHERE id_questionario_template_fk = ? ORDER BY ordem, id");
        $stmt2->bind_param('i', $id_template);
        $stmt2->execute();
        
        header('Location: editar_questionario_template.php?id=' . $id_template . '&msg=success');
    } else {
        header('Location: editar_questionario_template.php?id=' . $id_template . '&msg=error&detalhe=' . urlencode($conn->error));
    }
    exit;
}

// ========== MOVER PERGUNTA ==========
if ($action === 'move_question') {
    $id = (int)$_POST['id'];
    $direction = $_POST['direction'] ?? 'up';
    $id_template = (int)$_POST['id_template'];
    
    // Buscar pergunta atual
    $stmt = $conn->prepare("SELECT ordem FROM questionario_template_perguntas WHERE id = ?");
    $stmt->bind_param('i', $id);
    $stmt->execute();
    $result = $stmt->get_result();
    
    if ($result->num_rows > 0) {
        $ordem_atual = $result->fetch_assoc()['ordem'];
        
        if ($direction === 'up') {
            // Trocar com a pergunta anterior
            $stmt2 = $conn->prepare("SELECT id, ordem FROM questionario_template_perguntas WHERE id_questionario_template_fk = ? AND ordem < ? ORDER BY ordem DESC LIMIT 1");
            $stmt2->bind_param('ii', $id_template, $ordem_atual);
            $stmt2->execute();
            $anterior = $stmt2->get_result()->fetch_assoc();
            
            if ($anterior) {
                $conn->begin_transaction();
                
                $stmt3 = $conn->prepare("UPDATE questionario_template_perguntas SET ordem = ? WHERE id = ?");
                $stmt3->bind_param('ii', $anterior['ordem'], $id);
                $stmt3->execute();
                
                $stmt4 = $conn->prepare("UPDATE questionario_template_perguntas SET ordem = ? WHERE id = ?");
                $stmt4->bind_param('ii', $ordem_atual, $anterior['id']);
                $stmt4->execute();
                
                $conn->commit();
            }
        } else {
            // Trocar com a pergunta posterior
            $stmt2 = $conn->prepare("SELECT id, ordem FROM questionario_template_perguntas WHERE id_questionario_template_fk = ? AND ordem > ? ORDER BY ordem ASC LIMIT 1");
            $stmt2->bind_param('ii', $id_template, $ordem_atual);
            $stmt2->execute();
            $posterior = $stmt2->get_result()->fetch_assoc();
            
            if ($posterior) {
                $conn->begin_transaction();
                
                $stmt3 = $conn->prepare("UPDATE questionario_template_perguntas SET ordem = ? WHERE id = ?");
                $stmt3->bind_param('ii', $posterior['ordem'], $id);
                $stmt3->execute();
                
                $stmt4 = $conn->prepare("UPDATE questionario_template_perguntas SET ordem = ? WHERE id = ?");
                $stmt4->bind_param('ii', $ordem_atual, $posterior['id']);
                $stmt4->execute();
                
                $conn->commit();
            }
        }
    }
    
    header('Location: editar_questionario_template.php?id=' . $id_template . '&msg=success');
    exit;
}

// Se nenhuma ação foi processada
header('Location: montagem_questionario.php?msg=error&detalhe=Ação inválida');
exit;
?>
