<?php
require_once 'config/database.php';

echo "<h2>🔧 Corrigindo Estrutura das Tabelas para Evitar IDs Zerados</h2>";

try {
    $pdo = Database::getConnection();
    
    echo "<h3>1. Verificando estrutura atual das tabelas</h3>";
    
    // Verificar solicitacoes_rotas
    echo "<h4>📋 Tabela solicitacoes_rotas:</h4>";
    $stmt = $pdo->query("SHOW CREATE TABLE solicitacoes_rotas");
    $result = $stmt->fetch();
    echo "<pre>" . htmlspecialchars($result[1]) . "</pre>";
    
    // Verificar rota_clientes
    echo "<h4>📋 Tabela rota_clientes:</h4>";
    $stmt = $pdo->query("SHOW CREATE TABLE rota_clientes");
    $result = $stmt->fetch();
    echo "<pre>" . htmlspecialchars($result[1]) . "</pre>";
    
    echo "<h3>2. Corrigindo estrutura das tabelas</h3>";
    
    // Corrigir solicitacoes_rotas
    echo "<h4>🔧 Corrigindo solicitacoes_rotas:</h4>";
    
    // Verificar se a coluna id tem AUTO_INCREMENT
    $stmt = $pdo->query("SHOW COLUMNS FROM solicitacoes_rotas LIKE 'id'");
    $coluna = $stmt->fetch();
    
    if ($coluna && $coluna['Extra'] !== 'auto_increment') {
        echo "❌ Coluna 'id' não tem AUTO_INCREMENT<br>";
        echo "🔧 Adicionando AUTO_INCREMENT...<br>";
        
        // Adicionar AUTO_INCREMENT
        $pdo->exec("ALTER TABLE solicitacoes_rotas MODIFY id BIGINT AUTO_INCREMENT PRIMARY KEY");
        echo "✅ AUTO_INCREMENT adicionado à coluna 'id'<br>";
    } else {
        echo "✅ Coluna 'id' já tem AUTO_INCREMENT<br>";
    }
    
    // Verificar se há registros com ID = 0 e removê-los
    $stmt = $pdo->query("SELECT COUNT(*) as total FROM solicitacoes_rotas WHERE id = 0");
    $result = $stmt->fetch();
    if ($result['total'] > 0) {
        echo "🔧 Removendo registros com ID = 0...<br>";
        
        // Primeiro remover clientes relacionados
        $pdo->exec("DELETE FROM rota_clientes WHERE solicitacao_rota_id = 0");
        echo "✅ Clientes com solicitacao_rota_id = 0 removidos<br>";
        
        // Depois remover as rotas
        $pdo->exec("DELETE FROM solicitacoes_rotas WHERE id = 0");
        echo "✅ Rotas com ID = 0 removidas<br>";
    }
    
    // Corrigir rota_clientes
    echo "<h4>🔧 Corrigindo rota_clientes:</h4>";
    
    // Verificar se a coluna id tem AUTO_INCREMENT
    $stmt = $pdo->query("SHOW COLUMNS FROM rota_clientes LIKE 'id'");
    $coluna = $stmt->fetch();
    
    if ($coluna && $coluna['Extra'] !== 'auto_increment') {
        echo "❌ Coluna 'id' não tem AUTO_INCREMENT<br>";
        echo "🔧 Adicionando AUTO_INCREMENT...<br>";
        
        // Adicionar AUTO_INCREMENT
        $pdo->exec("ALTER TABLE rota_clientes MODIFY id BIGINT AUTO_INCREMENT PRIMARY KEY");
        echo "✅ AUTO_INCREMENT adicionado à coluna 'id'<br>";
    } else {
        echo "✅ Coluna 'id' já tem AUTO_INCREMENT<br>";
    }
    
    // Verificar se há registros com ID = 0 e removê-los
    $stmt = $pdo->query("SELECT COUNT(*) as total FROM rota_clientes WHERE id = 0");
    $result = $stmt->fetch();
    if ($result['total'] > 0) {
        echo "🔧 Removendo registros com ID = 0...<br>";
        $pdo->exec("DELETE FROM rota_clientes WHERE id = 0");
        echo "✅ Clientes com ID = 0 removidos<br>";
    }
    
    echo "<h3>3. Verificando AUTO_INCREMENT após correção</h3>";
    
    // Verificar AUTO_INCREMENT das tabelas
    $stmt = $pdo->query("SHOW TABLE STATUS LIKE 'solicitacoes_rotas'");
    $result = $stmt->fetch();
    echo "📋 solicitacoes_rotas - Auto_increment: {$result['Auto_increment']}<br>";
    
    $stmt = $pdo->query("SHOW TABLE STATUS LIKE 'rota_clientes'");
    $result = $stmt->fetch();
    echo "📋 rota_clientes - Auto_increment: {$result['Auto_increment']}<br>";
    
    echo "<h3>4. Testando criação de nova rota</h3>";
    
    // Testar criação de uma nova rota
    $sql = "INSERT INTO solicitacoes_rotas (
        motorista_id, veiculo_id, titulo, descricao, data_prevista, 
        hora_inicio_prevista, duracao_estimada, km_estimado, prioridade, status, gestor_id
    ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
    
    $stmt = $pdo->prepare($sql);
    $result = $stmt->execute([
        4, // motorista_id
        6, // veiculo_id
        'Rota Teste Estrutura Corrigida',
        'Rota criada para testar estrutura corrigida',
        '2025-08-28',
        '08:00:00',
        60,
        10,
        'normal',
        'aprovada',
        1 // gestor_id
    ]);
    
    if ($result) {
        $rotaId = $pdo->lastInsertId();
        echo "✅ Nova rota criada com ID: $rotaId (ID válido!)<br>";
        
        // Testar criação de cliente para esta rota
        $sql = "INSERT INTO rota_clientes (
            solicitacao_rota_id, nome_cliente, endereco, motivo_atendimento, 
            ordem_sequencia, tempo_estimado, status_atendimento
        ) VALUES (?, ?, ?, ?, ?, ?, ?)";
        
        $stmt = $pdo->prepare($sql);
        $result = $stmt->execute([
            $rotaId,
            'Cliente Teste Estrutura',
            'Rua Estrutura, 456 - Centro',
            'Teste de estrutura corrigida',
            1,
            30,
            'pendente'
        ]);
        
        if ($result) {
            $clienteId = $pdo->lastInsertId();
            echo "✅ Cliente criado com ID: $clienteId para rota ID: $rotaId (IDs válidos!)<br>";
        } else {
            echo "❌ Erro ao criar cliente<br>";
        }
    } else {
        echo "❌ Erro ao criar rota<br>";
    }
    
    echo "<h3>5. Verificando IDs finais</h3>";
    
    $stmt = $pdo->query("SELECT id, titulo FROM solicitacoes_rotas ORDER BY id DESC LIMIT 3");
    $rotas = $stmt->fetchAll();
    
    echo "📋 Últimas 3 rotas:<br>";
    foreach ($rotas as $rota) {
        echo "- ID: {$rota['id']} | Título: {$rota['titulo']}<br>";
    }
    
    $stmt = $pdo->query("SELECT id, solicitacao_rota_id, nome_cliente FROM rota_clientes ORDER BY id DESC LIMIT 3");
    $clientes = $stmt->fetchAll();
    
    echo "📋 Últimos 3 clientes de rota:<br>";
    foreach ($clientes as $cliente) {
        echo "- ID: {$cliente['id']} | Rota ID: {$cliente['solicitacao_rota_id']} | Nome: {$cliente['nome_cliente']}<br>";
    }
    
    echo "<h3>6. Testando API com nova rota</h3>";
    
    if (!empty($rotas)) {
        $rotaId = $rotas[0]['id'];
        $url = "https://sistemas.pinheiroempresas.com.br/controlefrotaV1.1/backend-php/api-simples-v2.php?acao=detalhes-rota-execucao&id=$rotaId";
        
        echo "🧪 Testando API com rota ID: $rotaId<br>";
        echo "📡 URL: $url<br>";
        
        $context = stream_context_create([
            'http' => [
                'timeout' => 10,
                'ignore_errors' => true
            ]
        ]);
        
        $response = file_get_contents($url, false, $context);
        
        if ($response !== false) {
            $data = json_decode($response, true);
            if ($data && isset($data['sucesso'])) {
                if ($data['sucesso']) {
                    echo "✅ API funcionando! Rota: {$data['dados']['titulo']}<br>";
                } else {
                    echo "❌ API retornou erro: {$data['mensagem']}<br>";
                }
            } else {
                echo "❌ Resposta inválida da API<br>";
                echo "📝 Response: " . htmlspecialchars($response) . "<br>";
            }
        } else {
            echo "❌ Erro ao acessar API<br>";
        }
    }
    
    echo "<h3>✅ Correção Concluída!</h3>";
    echo "<p>Agora as <strong>futuras rotas</strong> serão criadas com IDs válidos (não mais 0).</p>";
    echo "<p>Teste criando uma nova rota no sistema para verificar se o problema foi resolvido.</p>";
    
} catch (Exception $e) {
    echo "❌ Erro: " . $e->getMessage() . "<br>";
    echo "📋 Stack trace: " . $e->getTraceAsString() . "<br>";
}
?>
