<?php
header('Content-Type: application/json; charset=utf-8');

try {
    $pdo = new PDO('mysql:host=localhost;dbname=controle_frotas;charset=utf8', 'root', '');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    echo "=== DEBUG RASTREAMENTO ===\n\n";
    
    // 1. Verificar viagens em andamento
    echo "1. Viagens em andamento (data_fim IS NULL):\n";
    $stmt = $pdo->query("SELECT id, cliente, tecnico_id, veiculo_id, data_inicio, data_fim FROM viagens WHERE data_fim IS NULL");
    $viagensAndamento = $stmt->fetchAll();
    echo "Total: " . count($viagensAndamento) . "\n";
    
    foreach ($viagensAndamento as $viagem) {
        echo "- ID: {$viagem['id']}, Cliente: {$viagem['cliente']}, Tecnico: {$viagem['tecnico_id']}, Data: {$viagem['data_inicio']}\n";
    }
    
    // 2. Se não há viagens em andamento, criar uma para teste
    if (count($viagensAndamento) == 0) {
        echo "\n2. Criando viagem de teste...\n";
        
        // Verificar se há motoristas
        $stmt = $pdo->query("SELECT id, nome FROM motoristas LIMIT 1");
        $motorista = $stmt->fetch();
        
        // Verificar se há veículos
        $stmt = $pdo->query("SELECT id, modelo FROM veiculos LIMIT 1");
        $veiculo = $stmt->fetch();
        
        if ($motorista && $veiculo) {
            $stmt = $pdo->prepare("
                INSERT INTO viagens (
                    tecnico_id, veiculo_id, cliente, motivo, km_inicial, 
                    data_inicio, latitude_inicial, longitude_inicial,
                    endereco_inicial, sincronizado
                ) VALUES (?, ?, ?, ?, ?, NOW(), ?, ?, ?, 1)
            ");
            
            $stmt->execute([
                $motorista['id'],
                $veiculo['id'],
                'Cliente Teste Rastreamento',
                'Teste de rastreamento em tempo real',
                100,
                -10.9472, // Latitude de Sergipe
                -37.0731, // Longitude de Sergipe
                'Aracaju, SE - Teste'
            ]);
            
            $viagemId = $pdo->lastInsertId();
            echo "Viagem de teste criada com ID: $viagemId\n";
        } else {
            echo "Erro: Não há motoristas ou veículos cadastrados\n";
        }
    }
    
    // 3. Testar query do endpoint de rastreamento
    echo "\n3. Testando query do endpoint de rastreamento:\n";
    
    $stmt = $pdo->query("
        SELECT 
            v.id,
            v.cliente,
            v.motivo,
            v.data_inicio,
            v.km_inicial,
            v.latitude_inicial,
            v.longitude_inicial,
            v.latitude_final,
            v.longitude_final,
            v.endereco_inicial,
            v.endereco_final,
            v.trajeto,
            v.observacoes,
            COALESCE(m.nome, 'Motorista não identificado') as motorista_nome,
            COALESCE(m.matricula, 'N/A') as motorista_matricula,
            COALESCE(m.telefone, 'N/A') as motorista_telefone,
            CONCAT(COALESCE(m.nome, 'Motorista não identificado'), ' (', COALESCE(m.matricula, 'N/A'), ')') as motorista_completo,
            COALESCE(ve.modelo, 'Veículo não identificado') as veiculo_modelo,
            COALESCE(ve.placa, 'N/A') as veiculo_placa,
            CONCAT(COALESCE(ve.modelo, 'Veículo não identificado'), ' - ', COALESCE(ve.placa, 'N/A')) as veiculo_completo,
            TIMESTAMPDIFF(MINUTE, v.data_inicio, NOW()) as duracao_minutos
        FROM viagens v
        LEFT JOIN motoristas m ON CAST(v.tecnico_id AS UNSIGNED) = m.id
        LEFT JOIN veiculos ve ON v.veiculo_id = ve.id
        WHERE v.data_fim IS NULL
        ORDER BY v.data_inicio DESC
    ");
    
    $viagensRastreamento = $stmt->fetchAll();
    echo "Viagens encontradas para rastreamento: " . count($viagensRastreamento) . "\n";
    
    foreach ($viagensRastreamento as $viagem) {
        echo "\n--- Viagem ID: {$viagem['id']} ---\n";
        echo "Cliente: {$viagem['cliente']}\n";
        echo "Motorista: {$viagem['motorista_nome']} ({$viagem['motorista_matricula']})\n";
        echo "Veículo: {$viagem['veiculo_completo']}\n";
        echo "Duração: {$viagem['duracao_minutos']} minutos\n";
        echo "Posição inicial: {$viagem['latitude_inicial']}, {$viagem['longitude_inicial']}\n";
        echo "Endereço inicial: " . ($viagem['endereco_inicial'] ?? 'N/A') . "\n";
        
        // Processar posição atual
        if ($viagem['trajeto']) {
            $trajeto = json_decode($viagem['trajeto'], true);
            if (is_array($trajeto) && !empty($trajeto)) {
                $ultimoPonto = end($trajeto);
                echo "Posição atual (trajeto): {$ultimoPonto['latitude']}, {$ultimoPonto['longitude']}\n";
                echo "Total de pontos no trajeto: " . count($trajeto) . "\n";
            } else {
                echo "Posição atual: {$viagem['latitude_inicial']}, {$viagem['longitude_inicial']} (inicial)\n";
            }
        } else {
            echo "Posição atual: {$viagem['latitude_inicial']}, {$viagem['longitude_inicial']} (inicial)\n";
        }
    }
    
    // 4. Simular resposta da API
    echo "\n4. Simulando resposta da API:\n";
    
    $dadosProcessados = [];
    foreach ($viagensRastreamento as $viagem) {
        $trajeto = $viagem['trajeto'] ? json_decode($viagem['trajeto'], true) : [];
        if (!is_array($trajeto)) $trajeto = [];
        
        // Calcular posição atual
        if (!empty($trajeto)) {
            $ultimoPonto = end($trajeto);
            $posicaoAtual = [
                'latitude' => $ultimoPonto['latitude'] ?? $viagem['latitude_inicial'],
                'longitude' => $ultimoPonto['longitude'] ?? $viagem['longitude_inicial'],
                'timestamp' => $ultimoPonto['timestamp'] ?? $viagem['data_inicio']
            ];
        } else {
            $posicaoAtual = [
                'latitude' => $viagem['latitude_inicial'],
                'longitude' => $viagem['longitude_inicial'],
                'timestamp' => $viagem['data_inicio']
            ];
        }
        
        $dadosProcessados[] = [
            'id' => $viagem['id'],
            'cliente' => $viagem['cliente'],
            'motorista_nome' => $viagem['motorista_nome'],
            'motorista_completo' => $viagem['motorista_completo'],
            'veiculo_completo' => $viagem['veiculo_completo'],
            'duracao_minutos' => $viagem['duracao_minutos'],
            'posicao_atual' => $posicaoAtual,
            'total_pontos' => count($trajeto),
            'endereco_inicial_formatado' => $viagem['endereco_inicial'] ?: 'GPS: ' . $viagem['latitude_inicial'] . ', ' . $viagem['longitude_inicial'],
            'endereco_final_formatado' => 'Em andamento...'
        ];
    }
    
    $resposta = [
        'sucesso' => true,
        'dados' => $dadosProcessados,
        'mensagem' => 'Viagens em andamento carregadas'
    ];
    
    echo json_encode($resposta, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
    
} catch (Exception $e) {
    echo "ERRO: " . $e->getMessage() . "\n";
    echo "Linha: " . $e->getLine() . "\n";
    echo "Arquivo: " . $e->getFile() . "\n";
}
?> 
