<?php
// teste_api_direto.php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

echo "<h1>🔍 TESTE DIRETO DA API</h1>";

// Passo 1: Simular uma requisição POST para a API
echo "<h3>Passo 1: Simulando requisição para api_webphone.php</h3>";

// Forçar variáveis de sessão
if (session_status() === PHP_SESSION_NONE) {
    session_start();
}
$_SESSION['usuario_id'] = 100;
$_SESSION['tenant_id'] = 17;

echo "✅ Sessão configurada:<br>";
echo "usuario_id: {$_SESSION['usuario_id']}<br>";
echo "tenant_id: {$_SESSION['tenant_id']}<br>";

// Dados para enviar
$dados_teste = [
    'numero_destino' => '+5511999999999',
    'duracao' => 45,
    'status' => 'realizada',
    'call_id' => 'teste_' . time(),
    'cliente_id' => null
];

echo "<h3>Passo 2: Dados a serem enviados</h3>";
echo "<pre>";
print_r($dados_teste);
echo "</pre>";

// Converter para JSON
$json_dados = json_encode($dados_teste);
echo "<h3>Passo 3: JSON gerado</h3>";
echo "<pre>$json_dados</pre>";

// Incluir a API diretamente
echo "<h3>Passo 4: Incluindo api_webphone.php</h3>";

// Configurar variáveis de ambiente para simular requisição
$_SERVER['REQUEST_METHOD'] = 'POST';
$_GET['acao'] = 'registrar-chamada';
$GLOBALS['HTTP_RAW_POST_DATA'] = $json_dados;

// Capturar a saída da API
ob_start();

try {
    // Incluir a API
    include 'api_webphone.php';
    $saida = ob_get_clean();
    
    echo "<h3>Passo 5: Resposta da API</h3>";
    echo "<pre>$saida</pre>";
    
    // Tentar decodificar a resposta
    $resposta = json_decode($saida, true);
    if ($resposta) {
        if ($resposta['success']) {
            echo "<h4 style='color:green'>✅ API executou com sucesso!</h4>";
            echo "ID da chamada: " . ($resposta['chamada_id'] ?? 'N/A') . "<br>";
            echo "Custo: R$ " . ($resposta['custo'] ?? 'N/A') . "<br>";
        } else {
            echo "<h4 style='color:red'>❌ API retornou erro: " . ($resposta['error'] ?? 'Erro desconhecido') . "</h4>";
        }
    } else {
        echo "<h4 style='color:orange'>⚠️ Resposta não é JSON válido</h4>";
    }
    
} catch (Exception $e) {
    ob_end_clean();
    echo "<h4 style='color:red'>❌ Exceção: " . $e->getMessage() . "</h4>";
}

// Verificar se a chamada foi inserida
echo "<h3>Passo 6: Verificando se a chamada foi inserida</h3>";

require_once 'conexao.php';

$check = $conn->query("
    SELECT * FROM chamadas_telefonicas 
    WHERE call_id_zenvia LIKE 'teste_%' 
    ORDER BY id DESC LIMIT 1
");

if ($check && $row = $check->fetch_assoc()) {
    echo "<h4 style='color:green'>✅ Chamada encontrada no banco!</h4>";
    echo "<pre>";
    print_r($row);
    echo "</pre>";
} else {
    echo "<h4 style='color:red'>❌ Nenhuma chamada de teste encontrada</h4>";
    
    // Tentar INSERT direto para confirmar
    echo "<h3>Passo 7: Testando INSERT direto</h3>";
    
    $insert = $conn->prepare("
        INSERT INTO chamadas_telefonicas 
        (tenant_id, usuario_id, numero_origem, numero_destino, duracao, status, call_id_zenvia, custo, data_hora_inicio)
        VALUES (?, ?, ?, ?, ?, ?, ?, ?, NOW())
    ");
    
    $tenant_id = 17;
    $usuario_id = 100;
    $numero_origem = '+5548998298300';
    $numero_destino = '+5511999999999';
    $duracao = 45;
    $status = 'realizada';
    $call_id = 'teste_direto_' . time();
    $custo = ($duracao / 60) * 0.10;
    
    $insert->bind_param("iississd", 
        $tenant_id,
        $usuario_id,
        $numero_origem,
        $numero_destino,
        $duracao,
        $status,
        $call_id,
        $custo
    );
    
    if ($insert->execute()) {
        $id = $conn->insert_id;
        echo "<h4 style='color:green'>✅ INSERT direto funcionou! ID: $id</h4>";
    } else {
        echo "<h4 style='color:red'>❌ INSERT direto falhou: " . $insert->error . "</h4>";
    }
}

echo "<h3>✅ TESTE CONCLUÍDO</h3>";
?>