<?php
require_once 'conexao.php';

echo "<h2>🔧 Corrigindo Estrutura da Tabela rota_clientes</h2>";

try {
    $pdo = conectarBanco();
    
    // 1. Verificar estrutura atual
    echo "<h3>1. Estrutura Atual:</h3>";
    $sqlStructure = "DESCRIBE rota_clientes";
    $stmtStructure = $pdo->query($sqlStructure);
    $structure = $stmtStructure->fetchAll(PDO::FETCH_ASSOC);
    
    $campos = array_column($structure, 'Field');
    echo "Campos encontrados: " . implode(', ', $campos) . "<br>";
    
    // 2. Verificar se o campo status_atendimento existe
    if (!in_array('status_atendimento', $campos)) {
        echo "<h3>2. Campo status_atendimento não existe - Criando...</h3>";
        
        $sqlAdd = "ALTER TABLE rota_clientes ADD COLUMN status_atendimento ENUM('pendente', 'em_atendimento', 'concluido', 'cancelado') DEFAULT 'pendente' AFTER ordem_sequencia";
        $stmtAdd = $pdo->prepare($sqlAdd);
        $success = $stmtAdd->execute();
        
        if ($success) {
            echo "✅ Campo status_atendimento criado com sucesso!<br>";
        } else {
            echo "❌ Erro ao criar campo status_atendimento<br>";
            return;
        }
    } else {
        echo "✅ Campo status_atendimento já existe<br>";
        
        // Verificar se precisa ser corrigido
        foreach ($structure as $field) {
            if ($field['Field'] === 'status_atendimento') {
                echo "Tipo atual: {$field['Type']}<br>";
                echo "Default atual: {$field['Default']}<br>";
                
                // Se o tipo não for ENUM correto, corrigir
                if (strpos($field['Type'], 'enum') === false) {
                    echo "<h3>3. Corrigindo tipo do campo status_atendimento...</h3>";
                    
                    $sqlModify = "ALTER TABLE rota_clientes MODIFY COLUMN status_atendimento ENUM('pendente', 'em_atendimento', 'concluido', 'cancelado') DEFAULT 'pendente'";
                    $stmtModify = $pdo->prepare($sqlModify);
                    $success = $stmtModify->execute();
                    
                    if ($success) {
                        echo "✅ Tipo do campo corrigido com sucesso!<br>";
                    } else {
                        echo "❌ Erro ao corrigir tipo do campo<br>";
                    }
                }
                break;
            }
        }
    }
    
    // 3. Verificar se outros campos necessários existem
    $camposNecessarios = [
        'hora_chegada' => 'TIMESTAMP NULL',
        'hora_saida' => 'TIMESTAMP NULL',
        'updated_at' => 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'
    ];
    
    foreach ($camposNecessarios as $campo => $tipo) {
        if (!in_array($campo, $campos)) {
            echo "<h3>4. Criando campo $campo...</h3>";
            
            $sqlAdd = "ALTER TABLE rota_clientes ADD COLUMN $campo $tipo";
            $stmtAdd = $pdo->prepare($sqlAdd);
            $success = $stmtAdd->execute();
            
            if ($success) {
                echo "✅ Campo $campo criado com sucesso!<br>";
            } else {
                echo "❌ Erro ao criar campo $campo<br>";
            }
        } else {
            echo "✅ Campo $campo já existe<br>";
        }
    }
    
    // 4. Verificar estrutura final
    echo "<h3>5. Estrutura Final:</h3>";
    $sqlStructureFinal = "DESCRIBE rota_clientes";
    $stmtStructureFinal = $pdo->query($sqlStructureFinal);
    $structureFinal = $stmtStructureFinal->fetchAll(PDO::FETCH_ASSOC);
    
    echo "<table border='1'>";
    echo "<tr><th>Campo</th><th>Tipo</th><th>Null</th><th>Key</th><th>Default</th><th>Extra</th></tr>";
    foreach ($structureFinal as $field) {
        echo "<tr>";
        echo "<td>{$field['Field']}</td>";
        echo "<td>{$field['Type']}</td>";
        echo "<td>{$field['Null']}</td>";
        echo "<td>{$field['Key']}</td>";
        echo "<td>{$field['Default']}</td>";
        echo "<td>{$field['Extra']}</td>";
        echo "</tr>";
    }
    echo "</table>";
    
    // 5. Testar atualização
    echo "<h3>6. Testando Atualização:</h3>";
    
    $rotaId = 39;
    $clienteId = 82;
    
    // Verificar status atual
    $sqlCheck = "SELECT status_atendimento FROM rota_clientes WHERE id = ? AND solicitacao_rota_id = ?";
    $stmtCheck = $pdo->prepare($sqlCheck);
    $stmtCheck->execute([$clienteId, $rotaId]);
    $cliente = $stmtCheck->fetch(PDO::FETCH_ASSOC);
    
    if ($cliente) {
        echo "Status atual: '{$cliente['status_atendimento']}'<br>";
        
        // Tentar atualizar
        $sqlUpdate = "UPDATE rota_clientes SET status_atendimento = 'chegou' WHERE id = ? AND solicitacao_rota_id = ?";
        $stmtUpdate = $pdo->prepare($sqlUpdate);
        $success = $stmtUpdate->execute([$clienteId, $rotaId]);
        
        echo "Update success: " . ($success ? 'true' : 'false') . "<br>";
        echo "Rows affected: " . $stmtUpdate->rowCount() . "<br>";
        
        // Verificar resultado
        $stmtCheck->execute([$clienteId, $rotaId]);
        $clienteAtualizado = $stmtCheck->fetch(PDO::FETCH_ASSOC);
        
        echo "Status após update: '{$clienteAtualizado['status_atendimento']}'<br>";
        
        if ($clienteAtualizado['status_atendimento'] === 'chegou') {
            echo "✅ SUCESSO! Estrutura corrigida e funcionando!<br>";
        } else {
            echo "❌ Ainda há problemas com a estrutura<br>";
        }
    } else {
        echo "❌ Cliente não encontrado para teste<br>";
    }
    
} catch (Exception $e) {
    echo "❌ Erro: " . $e->getMessage() . "<br>";
    echo "Stack trace: <pre>" . $e->getTraceAsString() . "</pre>";
}
?> 
