<?php
// configurar_webphone_usuarios.php
// Script para configurar o webphone para todos os usuários do sistema

// ATIVAR EXIBIÇÃO DE ERROS PARA DIAGNÓSTICO
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// Incluir arquivo de conexão (mesmo diretório)
require_once 'conexao.php';

// Usar a conexão existente ($conn) do arquivo conexao.php
// A variável $conn já está disponível aqui

echo "<!DOCTYPE html>
<html>
<head>
    <title>Configuração Tvi Fone</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            margin: 0;
            padding: 20px;
            min-height: 100vh;
        }
        .container {
            max-width: 800px;
            margin: 0 auto;
            background: white;
            border-radius: 10px;
            padding: 30px;
            box-shadow: 0 10px 30px rgba(0,0,0,0.2);
        }
        h1 {
            color: #333;
            border-bottom: 2px solid #667eea;
            padding-bottom: 10px;
        }
        h2 {
            color: #555;
            margin-top: 30px;
        }
        .success {
            background: #d4edda;
            color: #155724;
            padding: 10px 15px;
            border-radius: 5px;
            margin: 10px 0;
        }
        .error {
            background: #f8d7da;
            color: #721c24;
            padding: 10px 15px;
            border-radius: 5px;
            margin: 10px 0;
        }
        .warning {
            background: #fff3cd;
            color: #856404;
            padding: 10px 15px;
            border-radius: 5px;
            margin: 10px 0;
        }
        .info {
            background: #d1ecf1;
            color: #0c5460;
            padding: 10px 15px;
            border-radius: 5px;
            margin: 10px 0;
        }
        table {
            width: 100%;
            border-collapse: collapse;
            margin: 15px 0;
        }
        table, th, td {
            border: 1px solid #ddd;
        }
        th, td {
            padding: 10px;
            text-align: left;
        }
        th {
            background: #f2f2f2;
        }
        .btn {
            background: #667eea;
            color: white;
            padding: 10px 20px;
            text-decoration: none;
            border-radius: 5px;
            display: inline-block;
            margin-top: 20px;
        }
        .btn:hover {
            background: #5a67d8;
        }
    </style>
</head>
<body>
    <div class='container'>";

echo "<h1>⚙️ Configuração Inicial do Tvi Fone</h1>";

try {
    // Verificar conexão
    if (!$conn || $conn->connect_error) {
        throw new Exception("Erro de conexão com o banco de dados: " . ($conn->connect_error ?? 'Conexão não estabelecida'));
    }
    
    echo "<div class='success'>✅ Conexão com banco de dados OK</div>";
    
    // =============================================
    // 1. VERIFICAR SE AS TABELAS JÁ EXISTEM
    // =============================================
    echo "<h2>📋 Verificando tabelas necessárias</h2>";
    
    $tabelas_necessarias = [
        'chamadas_telefonicas',
        'config_webphone', 
        'creditos_tenant',
        'historico_creditos'
    ];
    
    $tabelas_existem = 0;
    $tabelas_faltando = [];
    
    foreach ($tabelas_necessarias as $tabela) {
        $result = $conn->query("SHOW TABLES LIKE '$tabela'");
        if ($result && $result->num_rows > 0) {
            $tabelas_existem++;
            echo "<div class='success'>✅ Tabela '$tabela' já existe</div>";
        } else {
            $tabelas_faltando[] = $tabela;
            echo "<div class='warning'>⚠️ Tabela '$tabela' não encontrada</div>";
        }
    }
    
    if ($tabelas_existem < 4) {
        echo "<div class='error'>❌ ATENÇÃO: " . count($tabelas_faltando) . " tabelas não foram criadas!</div>";
        echo "<p>Por favor, execute o SQL de criação das tabelas abaixo no phpMyAdmin ou no seu banco de dados:</p>";
        echo "<textarea style='width:100%; height:300px; font-family:monospace; padding:10px;' readonly>";
        ?>
-- --------------------------------------------------------
-- Estrutura para tabela `chamadas_telefonicas`
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `chamadas_telefonicas` (
  `id` int NOT NULL AUTO_INCREMENT,
  `tenant_id` int UNSIGNED NOT NULL,
  `usuario_id` int NOT NULL,
  `cliente_id` bigint DEFAULT NULL,
  `numero_origem` varchar(20) NOT NULL,
  `numero_destino` varchar(20) NOT NULL,
  `duracao` int DEFAULT '0' COMMENT 'duração em segundos',
  `status` enum('realizada','nao_atendida','ocupado','falha','recebida') DEFAULT 'realizada',
  `call_id_zenvia` varchar(100) DEFAULT NULL,
  `gravacao_url` text,
  `custo` decimal(10,4) DEFAULT '0.0000',
  `data_hora_inicio` datetime DEFAULT CURRENT_TIMESTAMP,
  `data_hora_fim` datetime DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_tenant_usuario` (`tenant_id`,`usuario_id`),
  KEY `idx_tenant_cliente` (`tenant_id`,`cliente_id`),
  KEY `idx_tenant_data` (`tenant_id`,`data_hora_inicio`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- --------------------------------------------------------
-- Estrutura para tabela `config_webphone`
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `config_webphone` (
  `id` int NOT NULL AUTO_INCREMENT,
  `tenant_id` int UNSIGNED NOT NULL,
  `usuario_id` int NOT NULL,
  `bina_padrao` varchar(20) DEFAULT NULL,
  `ramal` varchar(20) DEFAULT NULL,
  `webphone_key` varchar(255) DEFAULT NULL,
  `sip_server` varchar(255) DEFAULT NULL,
  `sip_user` varchar(100) DEFAULT NULL,
  `sip_password` varchar(255) DEFAULT NULL,
  `ativo` tinyint(1) DEFAULT '1',
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique_tenant_usuario` (`tenant_id`,`usuario_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- --------------------------------------------------------
-- Estrutura para tabela `creditos_tenant`
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `creditos_tenant` (
  `id` int NOT NULL AUTO_INCREMENT,
  `tenant_id` int UNSIGNED NOT NULL,
  `saldo_atual` decimal(10,2) DEFAULT '0.00',
  `saldo_minimo_alerta` decimal(10,2) DEFAULT '10.00',
  `ultima_recarga` datetime DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- --------------------------------------------------------
-- Estrutura para tabela `historico_creditos`
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `historico_creditos` (
  `id` int NOT NULL AUTO_INCREMENT,
  `tenant_id` int UNSIGNED NOT NULL,
  `tipo` enum('recarga','consumo','ajuste','estorno') NOT NULL,
  `valor` decimal(10,2) NOT NULL,
  `saldo_anterior` decimal(10,2) NOT NULL,
  `saldo_atual` decimal(10,2) NOT NULL,
  `chamada_id` int DEFAULT NULL,
  `descricao` text,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_tenant` (`tenant_id`),
  KEY `idx_chamada` (`chamada_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
        <?php
        echo "</textarea>";
        echo "<p>Após criar as tabelas, <a href='configurar_webphone_usuarios.php'>clique aqui para continuar</a></p>";
        exit;
    }
    
    // =============================================
    // 2. CONFIGURAR WEBPHONE PARA USUÁRIOS
    // =============================================
    echo "<h2>📱 Configurando Webphone para Usuários</h2>";
    
    // Buscar usuários que não têm configuração
    $query = "
        SELECT u.id, u.tenant_id, u.nome, u.email, u.telefone 
        FROM usuarios u
        LEFT JOIN config_webphone c ON c.usuario_id = u.id AND c.tenant_id = u.tenant_id
        WHERE c.id IS NULL AND u.ativo = 'sim'
    ";
    
    $result = $conn->query($query);
    
    if (!$result) {
        throw new Exception("Erro na consulta de usuários: " . $conn->error);
    }
    
    $usuarios_sem_config = [];
    while ($row = $result->fetch_assoc()) {
        $usuarios_sem_config[] = $row;
    }
    
    if (empty($usuarios_sem_config)) {
        echo "<div class='success'>✅ Todos os usuários ativos já estão configurados!</div>";
    } else {
        echo "<div class='info'>🔧 Configurando " . count($usuarios_sem_config) . " usuários...</div>";
        
        $insert = $conn->prepare("
            INSERT INTO config_webphone 
            (tenant_id, usuario_id, bina_padrao, ramal, webphone_key, ativo, created_at, updated_at)
            VALUES (?, ?, ?, ?, 'd791f72e8cdf3d018548e2fc9b687ce9', 1, NOW(), NOW())
        ");
        
        if (!$insert) {
            throw new Exception("Erro no prepare: " . $conn->error);
        }
        
        $contador = 0;
        echo "<table>";
        echo "<tr><th>Usuário</th><th>Email</th><th>Ramal</th><th>Bina</th><th>Status</th></tr>";
        
        foreach ($usuarios_sem_config as $usuario) {
            try {
                // Definir bina (usa telefone do usuário ou número padrão)
                $bina = !empty($usuario['telefone']) ? $usuario['telefone'] : '+5548998298300';
                // Limpar formatação do telefone
                $bina = preg_replace('/[^0-9+]/', '', $bina);
                if (strlen($bina) < 10) {
                    $bina = '+5548998298300';
                }
                
                // Criar ramal: 4 + ID do usuário com 3 dígitos (ex: 4001, 4012, 4123)
                $ramal = '4' . str_pad($usuario['id'], 3, '0', STR_PAD_LEFT);
                
                $insert->bind_param("iiss", 
                    $usuario['tenant_id'],
                    $usuario['id'],
                    $bina,
                    $ramal
                );
                
                if ($insert->execute()) {
                    echo "<tr>";
                    echo "<td>" . htmlspecialchars($usuario['nome']) . "</td>";
                    echo "<td>" . htmlspecialchars($usuario['email']) . "</td>";
                    echo "<td><strong>$ramal</strong></td>";
                    echo "<td>$bina</td>";
                    echo "<td style='color:green'>✅ Configurado</td>";
                    echo "</tr>";
                    $contador++;
                } else {
                    echo "<tr style='color:red'>";
                    echo "<td>" . htmlspecialchars($usuario['nome']) . "</td>";
                    echo "<td>" . htmlspecialchars($usuario['email']) . "</td>";
                    echo "<td>-</td>";
                    echo "<td>-</td>";
                    echo "<td>❌ Erro: " . $insert->error . "</td>";
                    echo "</tr>";
                }
                
            } catch (Exception $e) {
                echo "<tr style='color:red'>";
                echo "<td>" . htmlspecialchars($usuario['nome']) . "</td>";
                echo "<td>" . htmlspecialchars($usuario['email']) . "</td>";
                echo "<td>-</td>";
                echo "<td>-</td>";
                echo "<td>❌ Erro: " . $e->getMessage() . "</td>";
                echo "</tr>";
            }
        }
        
        echo "</table>";
        echo "<div class='success'>✅ <strong>$contador</strong> usuários configurados com sucesso!</div>";
    }
    
    // =============================================
    // 3. CRIAR CRÉDITOS INICIAIS PARA TENANTS
    // =============================================
    echo "<h2>💰 Configurando Créditos para Tenants</h2>";
    
    $query = "
        SELECT t.id, t.nome 
        FROM tenants t
        LEFT JOIN creditos_tenant c ON c.tenant_id = t.id
        WHERE c.id IS NULL AND t.ativo = 1
    ";
    
    $result = $conn->query($query);
    
    if (!$result) {
        throw new Exception("Erro na consulta de tenants: " . $conn->error);
    }
    
    $tenants_sem_credito = [];
    while ($row = $result->fetch_assoc()) {
        $tenants_sem_credito[] = $row;
    }
    
    if (empty($tenants_sem_credito)) {
        echo "<div class='success'>✅ Todos os tenants ativos já possuem créditos configurados!</div>";
    } else {
        echo "<div class='info'>🔧 Configurando créditos para " . count($tenants_sem_credito) . " tenants...</div>";
        
        $insert = $conn->prepare("
            INSERT INTO creditos_tenant 
            (tenant_id, saldo_atual, ultima_recarga, created_at, updated_at)
            VALUES (?, 50.00, NOW(), NOW(), NOW())
        ");
        
        if (!$insert) {
            throw new Exception("Erro no prepare: " . $conn->error);
        }
        
        $contador = 0;
        echo "<table>";
        echo "<tr><th>Tenant</th><th>Crédito Inicial</th><th>Status</th></tr>";
        
        foreach ($tenants_sem_credito as $tenant) {
            try {
                $insert->bind_param("i", $tenant['id']);
                
                if ($insert->execute()) {
                    echo "<tr>";
                    echo "<td>" . htmlspecialchars($tenant['nome']) . "</td>";
                    echo "<td><strong>R$ 50,00</strong></td>";
                    echo "<td style='color:green'>✅ Configurado</td>";
                    echo "</tr>";
                    $contador++;
                } else {
                    echo "<tr style='color:red'>";
                    echo "<td>" . htmlspecialchars($tenant['nome']) . "</td>";
                    echo "<td>-</td>";
                    echo "<td>❌ Erro: " . $insert->error . "</td>";
                    echo "</tr>";
                }
            } catch (Exception $e) {
                echo "<tr style='color:red'>";
                echo "<td>" . htmlspecialchars($tenant['nome']) . "</td>";
                echo "<td>-</td>";
                echo "<td>❌ Erro: " . $e->getMessage() . "</td>";
                echo "</tr>";
            }
        }
        
        echo "</table>";
        echo "<div class='success'>✅ <strong>$contador</strong> tenants configurados com crédito inicial de R$ 50,00!</div>";
    }
    
    // =============================================
    // 4. VERIFICAR CONFIGURAÇÕES EXISTENTES
    // =============================================
    echo "<h2>📊 Resumo da Configuração</h2>";
    
    // Total de usuários configurados
    $result = $conn->query("SELECT COUNT(*) as total FROM config_webphone");
    $total_config = $result->fetch_assoc();
    echo "<p>📱 Total de usuários com webphone configurado: <strong>{$total_config['total']}</strong></p>";
    
    // Total de tenants com crédito
    $result = $conn->query("SELECT COUNT(*) as total, SUM(saldo_atual) as total_saldo FROM creditos_tenant");
    $total_creditos = $result->fetch_assoc();
    echo "<p>💰 Total de tenants com crédito: <strong>{$total_creditos['total']}</strong></p>";
    echo "<p>💵 Saldo total acumulado: <strong>R$ " . number_format($total_creditos['total_saldo'] ?? 0, 2, ',', '.') . "</strong></p>";
    
    echo "<hr>";
    echo "<div style='text-align:center; margin-top:30px;'>";
    echo "<h2 style='color:green'>✅ CONFIGURAÇÃO CONCLUÍDA COM SUCESSO!</h2>";
    echo "<p>Agora você pode acessar o <a href='webphone.php' class='btn'>📞 Tvi Fone - Webphone</a></p>";
    echo "</div>";
    
} catch (Exception $e) {
    echo "<div class='error'>";
    echo "<h2>❌ ERRO</h2>";
    echo "<p><strong>" . $e->getMessage() . "</strong></p>";
    echo "<p>Linha: " . $e->getLine() . "</p>";
    echo "<p>Arquivo: " . $e->getFile() . "</p>";
    echo "</div>";
    
    // Mostrar mais detalhes se necessário
    if (isset($conn) && $conn->error) {
        echo "<div class='warning'>Detalhes do banco: " . $conn->error . "</div>";
    }
}

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