<?php
// Diagnóstico e correção de IDs incorretos no checklist

require_once 'config/database.php';

try {
    $pdo = new PDO($dsn, $username, $password, $options);
    
    echo "=== DIAGNÓSTICO DE CHECKLISTS COM IDS INCORRETOS ===\n\n";
    
    // 1. Listar checklists com viagem_id que não existe
    echo "📋 1. CHECKLISTS COM VIAGEM_ID INEXISTENTE:\n";
    $sql = "SELECT c.id, c.viagem_id, c.veiculo_id, c.data_hora, c.sincronizado
            FROM checklist_veiculo c
            LEFT JOIN viagens v ON c.viagem_id = v.id
            WHERE v.id IS NULL
            ORDER BY c.id DESC";
    
    $stmt = $pdo->query($sql);
    $checklistsIncorretos = $stmt->fetchAll();
    
    if (empty($checklistsIncorretos)) {
        echo "✅ Nenhum checklist com ID incorreto encontrado!\n\n";
    } else {
        echo "❌ Encontrados " . count($checklistsIncorretos) . " checklists com IDs incorretos:\n";
        foreach ($checklistsIncorretos as $checklist) {
            echo "  - Checklist ID: {$checklist['id']}, viagem_id: {$checklist['viagem_id']}, veiculo_id: {$checklist['veiculo_id']}, data: {$checklist['data_hora']}\n";
        }
        echo "\n";
    }
    
    // 2. Para cada checklist incorreto, tentar encontrar a viagem correta
    echo "🔍 2. TENTANDO ENCONTRAR VIAGENS CORRETAS:\n";
    
    foreach ($checklistsIncorretos as $checklist) {
        echo "Checklist ID {$checklist['id']} (viagem_id incorreto: {$checklist['viagem_id']}):\n";
        
        $veiculoId = $checklist['veiculo_id'];
        $dataChecklist = date('Y-m-d', strtotime($checklist['data_hora']));
        
        // Buscar viagem correta por veículo e data
        $sqlViagem = "SELECT id, data_inicio, data_fim, cliente, motivo 
                      FROM viagens 
                      WHERE veiculo_id = ? 
                      AND DATE(data_inicio) = ?
                      ORDER BY data_inicio DESC 
                      LIMIT 1";
        
        $stmtViagem = $pdo->prepare($sqlViagem);
        $stmtViagem->execute([$veiculoId, $dataChecklist]);
        $viagemCorreta = $stmtViagem->fetch();
        
        if ($viagemCorreta) {
            echo "  ✅ Viagem encontrada: ID {$viagemCorreta['id']}, cliente: {$viagemCorreta['cliente']}\n";
            echo "  📅 Data viagem: {$viagemCorreta['data_inicio']} - {$viagemCorreta['data_fim']}\n";
            echo "  📋 Data checklist: {$checklist['data_hora']}\n";
            
            // Corrigir o checklist
            $sqlUpdate = "UPDATE checklist_veiculo SET viagem_id = ? WHERE id = ?";
            $stmtUpdate = $pdo->prepare($sqlUpdate);
            $result = $stmtUpdate->execute([$viagemCorreta['id'], $checklist['id']]);
            
            if ($result) {
                echo "  🔧 CORRIGIDO: Checklist ID {$checklist['id']} agora aponta para viagem ID {$viagemCorreta['id']}\n";
            } else {
                echo "  ❌ ERRO ao corrigir checklist ID {$checklist['id']}\n";
            }
        } else {
            echo "  ❌ Nenhuma viagem encontrada para veículo {$veiculoId} na data {$dataChecklist}\n";
        }
        echo "\n";
    }
    
    // 3. Verificar resultado final
    echo "📊 3. VERIFICAÇÃO FINAL:\n";
    $stmt = $pdo->query($sql);
    $remainingIncorrect = $stmt->fetchAll();
    
    if (empty($remainingIncorrect)) {
        echo "✅ Todos os checklists agora têm IDs de viagem corretos!\n";
    } else {
        echo "⚠️ Ainda existem " . count($remainingIncorrect) . " checklists com problemas.\n";
    }
    
    echo "\n=== DIAGNÓSTICO CONCLUÍDO ===\n";
    
} catch (Exception $e) {
    echo "❌ ERRO: " . $e->getMessage() . "\n";
}
?> 
