<?php
// diagnostico_chamadas.php
require_once 'conexao.php';

// Ativar exibição de erros
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

echo "<!DOCTYPE html>
<html>
<head>
    <title>Diagnóstico do Sistema de Chamadas</title>
    <style>
        body { font-family: Arial; padding: 20px; background: #f5f5f5; }
        .container { max-width: 1200px; margin: 0 auto; background: white; padding: 30px; border-radius: 10px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); }
        h1 { color: #333; border-bottom: 2px solid #2563EB; padding-bottom: 10px; }
        h2 { color: #2563EB; margin-top: 30px; }
        .success { background: #d4edda; color: #155724; padding: 15px; border-radius: 5px; margin: 10px 0; }
        .error { background: #f8d7da; color: #721c24; padding: 15px; border-radius: 5px; margin: 10px 0; }
        .warning { background: #fff3cd; color: #856404; padding: 15px; border-radius: 5px; margin: 10px 0; }
        .info { background: #d1ecf1; color: #0c5460; padding: 15px; border-radius: 5px; margin: 10px 0; }
        table { width: 100%; border-collapse: collapse; margin: 15px 0; }
        th, td { border: 1px solid #ddd; padding: 12px; text-align: left; }
        th { background: #f2f2f2; }
        .badge { padding: 3px 8px; border-radius: 3px; font-size: 12px; font-weight: bold; }
        .badge-success { background: #28a745; color: white; }
        .badge-danger { background: #dc3545; color: white; }
        .badge-warning { background: #ffc107; color: black; }
        pre { background: #f8f9fa; padding: 15px; border-radius: 5px; overflow: auto; }
    </style>
</head>
<body>
    <div class='container'>";

echo "<h1>📞 Diagnóstico do Sistema de Chamadas</h1>";

// Verificar se usuário está logado
$usuario = obterUsuarioAutenticado();

if (empty($usuario)) {
    echo "<div class='error'>❌ Você não está logado! Faça login primeiro.</div>";
    echo "<p><a href='login.php' style='color:#2563EB;'>Ir para login</a></p>";
    exit;
}

echo "<div class='success'>✅ Usuário autenticado: <strong>{$usuario['nome']}</strong> (ID: {$usuario['id']})</div>";
echo "<div class='info'>🏢 Tenant ID: <strong>{$usuario['tenant_id']}</strong></div>";

// 1. Verificar tabelas
echo "<h2>📋 1. Verificação das Tabelas</h2>";

$tabelas = [
    'chamadas_telefonicas',
    'config_webphone',
    'creditos_tenant',
    'historico_creditos'
];

foreach ($tabelas as $tabela) {
    $result = $conn->query("SHOW TABLES LIKE '$tabela'");
    if ($result->num_rows > 0) {
        // Verificar estrutura
        $cols = $conn->query("DESCRIBE $tabela");
        $num_cols = $cols->num_rows;
        echo "<div class='success'>✅ Tabela <strong>$tabela</strong> existe ($num_cols colunas)</div>";
        
        // Verificar registros
        $count = $conn->query("SELECT COUNT(*) as total FROM $tabela")->fetch_assoc();
        echo "<div style='margin-left:20px;'>📊 Registros: <strong>{$count['total']}</strong></div>";
    } else {
        echo "<div class='error'>❌ Tabela <strong>$tabela</strong> NÃO existe!</div>";
    }
}

// 2. Verificar configuração do webphone para o usuário
echo "<h2>📱 2. Configuração do Webphone</h2>";

$stmt = $conn->prepare("
    SELECT * FROM config_webphone 
    WHERE usuario_id = ? AND tenant_id = ?
");
$stmt->bind_param("ii", $usuario['id'], $usuario['tenant_id']);
$stmt->execute();
$config = $stmt->get_result()->fetch_assoc();

if ($config) {
    echo "<div class='success'>✅ Configuração encontrada:</div>";
    echo "<table>";
    echo "<tr><th>Campo</th><th>Valor</th></tr>";
    echo "<tr><td>ID</td><td>{$config['id']}</td></tr>";
    echo "<tr><td>Ramal</td><td><strong>{$config['ramal']}</strong></td></tr>";
    echo "<tr><td>Bina Padrão</td><td>{$config['bina_padrao']}</td></tr>";
    echo "<tr><td>Webphone Key</td><td>" . substr($config['webphone_key'], 0, 10) . "...</td></tr>";
    echo "<tr><td>Ativo</td><td>" . ($config['ativo'] ? '✅ Sim' : '❌ Não') . "</td></tr>";
    echo "</table>";
} else {
    echo "<div class='warning'>⚠️ Nenhuma configuração encontrada para este usuário!</div>";
    echo "<p>Execute o script de configuração: <a href='configurar_webphone_usuarios.php'>configurar_webphone_usuarios.php</a></p>";
}

// 3. Verificar créditos do tenant
echo "<h2>💰 3. Créditos do Tenant</h2>";

$stmt = $conn->prepare("SELECT * FROM creditos_tenant WHERE tenant_id = ?");
$stmt->bind_param("i", $usuario['tenant_id']);
$stmt->execute();
$creditos = $stmt->get_result()->fetch_assoc();

if ($creditos) {
    echo "<div class='success'>✅ Créditos encontrados:</div>";
    echo "<table>";
    echo "<tr><th>Saldo Atual</th><td><strong>R$ " . number_format($creditos['saldo_atual'], 2, ',', '.') . "</strong></td></tr>";
    echo "<tr><th>Saldo Mínimo Alerta</th><td>R$ " . number_format($creditos['saldo_minimo_alerta'], 2, ',', '.') . "</td></tr>";
    echo "<tr><th>Última Recarga</th><td>" . ($creditos['ultima_recarga'] ?? 'Nunca') . "</td></tr>";
    echo "</table>";
} else {
    echo "<div class='warning'>⚠️ Nenhum crédito configurado para este tenant!</div>";
}

// 4. Verificar chamadas registradas
echo "<h2>📞 4. Chamadas Registradas</h2>";

$stmt = $conn->prepare("
    SELECT c.*, u.nome as usuario_nome 
    FROM chamadas_telefonicas c
    JOIN usuarios u ON u.id = c.usuario_id
    WHERE c.tenant_id = ?
    ORDER BY c.data_hora_inicio DESC
    LIMIT 10
");
$stmt->bind_param("i", $usuario['tenant_id']);
$stmt->execute();
$chamadas = $stmt->get_result()->fetch_all(MYSQLI_ASSOC);

if (count($chamadas) > 0) {
    echo "<div class='success'>✅ Encontradas <strong>" . count($chamadas) . "</strong> chamadas recentes:</div>";
    echo "<table>";
    echo "<tr><th>ID</th><th>Data/Hora</th><th>Usuário</th><th>Número</th><th>Duração</th><th>Custo</th><th>Status</th></tr>";
    foreach ($chamadas as $c) {
        echo "<tr>";
        echo "<td>{$c['id']}</td>";
        echo "<td>" . date('d/m/Y H:i:s', strtotime($c['data_hora_inicio'])) . "</td>";
        echo "<td>{$c['usuario_nome']}</td>";
        echo "<td>{$c['numero_destino']}</td>";
        echo "<td>{$c['duracao']}s</td>";
        echo "<td>R$ " . number_format($c['custo'], 2, ',', '.') . "</td>";
        echo "<td>";
        $badge_class = $c['status'] == 'realizada' ? 'badge-success' : 'badge-warning';
        echo "<span class='badge $badge_class'>{$c['status']}</span>";
        echo "</td>";
        echo "</tr>";
    }
    echo "</table>";
} else {
    echo "<div class='warning'>⚠️ Nenhuma chamada registrada para este tenant!</div>";
}

// 5. Testar registro manual de chamada
echo "<h2>🧪 5. Teste de Registro Manual</h2>";

// Inserir uma chamada de teste
$teste_inserido = false;
if (!isset($_GET['testar']) || $_GET['testar'] == '1') {
    $numero_teste = "+5511999999999";
    $duracao_teste = rand(10, 60);
    $custo_teste = ($duracao_teste / 60) * 0.10;
    
    $insert = $conn->prepare("
        INSERT INTO chamadas_telefonicas 
        (tenant_id, usuario_id, numero_origem, numero_destino, duracao, status, custo, data_hora_inicio)
        VALUES (?, ?, '5511999999999', ?, ?, 'realizada', ?, NOW())
    ");
    $insert->bind_param("iisid", 
        $usuario['tenant_id'],
        $usuario['id'],
        $numero_teste,
        $duracao_teste,
        $custo_teste
    );
    
    if ($insert->execute()) {
        $teste_id = $conn->insert_id;
        echo "<div class='success'>✅ Chamada de teste inserida com sucesso! ID: $teste_id</div>";
        $teste_inserido = true;
    } else {
        echo "<div class='error'>❌ Erro ao inserir chamada de teste: " . $conn->error . "</div>";
    }
}

echo "<form method='GET'>";
echo "<input type='hidden' name='testar' value='1'>";
echo "<button type='submit' style='background: #2563EB; color: white; border: none; padding: 10px 20px; border-radius: 5px; cursor: pointer;'>
        🧪 Inserir Chamada de Teste
      </button>";
echo "</form>";

if ($teste_inserido) {
    echo "<p><a href='diagnostico_chamadas.php' style='color:#2563EB;'>Atualizar página</a> para ver a chamada na lista</p>";
}

// 6. Verificar permissões e sessão
echo "<h2>🔐 6. Informações da Sessão</h2>";
echo "<pre>";
print_r($_SESSION);
echo "</pre>";

// 7. Verificar API de registro
echo "<h2>⚙️ 7. Verificar API de Registro</h2>";
echo "<p>Verifique se o arquivo <strong>api_webphone.php</strong> existe e tem permissões corretas:</p>";

$api_path = __DIR__ . '/api_webphone.php';
if (file_exists($api_path)) {
    echo "<div class='success'>✅ api_webphone.php encontrado</div>";
    echo "<div>📁 Caminho: $api_path</div>";
    echo "<div>🔒 Permissões: " . substr(sprintf('%o', fileperms($api_path)), -4) . "</div>";
} else {
    echo "<div class='error'>❌ api_webphone.php NÃO encontrado!</div>";
}

// Link para o relatório
echo "<h2>📊 8. Acessar Relatório</h2>";
echo "<p><a href='webphone_relatorios.php' style='display: inline-block; background: #28a745; color: white; padding: 10px 20px; text-decoration: none; border-radius: 5px;'>📊 Ir para Relatório de Chamadas</a></p>";

echo "</div></body></html>";
?>