<?php
session_start();
require_once 'conexao.php';

// Log para debug
error_log("=== INICIANDO obter_questionario_etapa.php ===");

// Verificar se usuário está logado
if (!isset($_SESSION['logado']) || $_SESSION['logado'] !== true) {
    error_log("ERRO: Usuário não logado");
    header('HTTP/1.1 401 Unauthorized');
    echo json_encode(['success' => false, 'message' => 'Acesso não autorizado']);
    exit;
}

// Validar parâmetros
$etapa_id = filter_input(INPUT_GET, 'etapa_id', FILTER_VALIDATE_INT);
$funil_id = filter_input(INPUT_GET, 'funil_id', FILTER_VALIDATE_INT);

error_log("DEBUG: Parâmetros recebidos - etapa_id: $etapa_id, funil_id: $funil_id");

if (!$etapa_id || !$funil_id) {
    error_log("ERRO: Parâmetros inválidos ou faltantes");
    header('HTTP/1.1 400 Bad Request');
    echo json_encode([
        'success' => false, 
        'message' => 'Parâmetros inválidos. etapa_id e funil_id são obrigatórios.',
        'etapa_id_recebido' => $etapa_id,
        'funil_id_recebido' => $funil_id
    ]);
    exit;
}

try {
    // Buscar o questionario_id da etapa
    $sql = "SELECT questionario_id FROM etapas_funis WHERE id = ? AND funil_id = ?";
    $stmt = $conn->prepare($sql);
    
    if (!$stmt) {
        throw new Exception("Erro no prepare: " . $conn->error);
    }
    
    $stmt->bind_param("ii", $etapa_id, $funil_id);
    
    if (!$stmt->execute()) {
        throw new Exception("Erro no execute: " . $stmt->error);
    }
    
    $result = $stmt->get_result();
    $etapa = $result->fetch_assoc();
    $stmt->close();
    
    error_log("DEBUG: Resultado da consulta da etapa: " . print_r($etapa, true));
    
    if ($etapa && $etapa['questionario_id']) {
        $questionario_id = $etapa['questionario_id'];
        error_log("DEBUG: Questionário ID encontrado na etapa: $questionario_id");
        
        // Verificar se o questionário existe e está ativo
        $sqlQuestionario = "SELECT id, nome FROM formularios WHERE id = ?";
        $stmtQuestionario = $conn->prepare($sqlQuestionario);
        $stmtQuestionario->bind_param("i", $questionario_id);
        $stmtQuestionario->execute();
        $questionario = $stmtQuestionario->get_result()->fetch_assoc();
        $stmtQuestionario->close();
        
        if ($questionario) {
            error_log("DEBUG: Questionário validado - ID: {$questionario['id']}, Nome: {$questionario['nome']}");
            echo json_encode([
                'success' => true, 
                'questionario_id' => $questionario_id,
                'questionario_nome' => $questionario['nome'],
                'message' => 'Questionário encontrado com sucesso'
            ]);
        } else {
            error_log("DEBUG: Questionário não encontrado na tabela formularios");
            // Questionário não existe mais, buscar um padrão
            buscarQuestionarioPadrao($conn);
        }
        
    } else {
        error_log("DEBUG: Etapa não possui questionario_id específico");
        // Se não tem questionário específico, buscar um padrão
        buscarQuestionarioPadrao($conn);
    }
    
} catch (Exception $e) {
    error_log("ERRO CRÍTICO: " . $e->getMessage());
    echo json_encode([
        'success' => false, 
        'message' => 'Erro interno: ' . $e->getMessage()
    ]);
}

$conn->close();

// Função para buscar questionário padrão
function buscarQuestionarioPadrao($conn) {
    $tenant_id = $_SESSION['tenant_id'] ?? 0;
    error_log("DEBUG: Buscando questionário padrão para tenant: $tenant_id");
    
    $sqlPadrao = "SELECT id, nome FROM formularios WHERE tenant_id = ? ORDER BY id DESC LIMIT 1";
    $stmtPadrao = $conn->prepare($sqlPadrao);
    
    if (!$stmtPadrao) {
        throw new Exception("Erro no prepare do questionário padrão: " . $conn->error);
    }
    
    $stmtPadrao->bind_param("i", $tenant_id);
    
    if (!$stmtPadrao->execute()) {
        throw new Exception("Erro no execute do questionário padrão: " . $stmtPadrao->error);
    }
    
    $resultPadrao = $stmtPadrao->get_result();
    $questionarioPadrao = $resultPadrao->fetch_assoc();
    $stmtPadrao->close();
    
    if ($questionarioPadrao) {
        error_log("DEBUG: Questionário padrão encontrado - ID: {$questionarioPadrao['id']}, Nome: {$questionarioPadrao['nome']}");
        echo json_encode([
            'success' => true, 
            'questionario_id' => $questionarioPadrao['id'],
            'questionario_nome' => $questionarioPadrao['nome'],
            'message' => 'Questionário padrão encontrado'
        ]);
    } else {
        error_log("DEBUG: Nenhum questionário encontrado");
        echo json_encode([
            'success' => false, 
            'message' => 'Nenhum questionário encontrado para esta etapa. É necessário criar um questionário primeiro.'
        ]);
    }
}
?>