<?php
/**
 * Teste para verificar dados de rastreamento GPS
 */

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

// Conectar ao banco
function conectarBanco() {
    $host = 'localhost';
    $dbname = 'pinheir3_controle_frotasV1.1';
    $username = 'pinheir3_admin';
    $password = '080880Gelboy';
    
    try {
        $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $username, $password, [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        ]);
        return $pdo;
    } catch (PDOException $e) {
        throw new Exception('Erro de conexão: ' . $e->getMessage());
    }
}

try {
    $pdo = conectarBanco();
    
    $viagemId = $_GET['id'] ?? 68;
    
    // Verificar se a tabela existe
    $stmt = $pdo->query("SHOW TABLES LIKE 'rastreamento_tempo_real'");
    $tabelaExiste = $stmt->fetch();
    
    $response = [
        'sucesso' => true,
        'viagem_id' => $viagemId,
        'tabela_existe' => $tabelaExiste ? true : false,
        'pontos_gps' => []
    ];
    
    if ($tabelaExiste) {
        // Buscar pontos GPS da viagem
        $stmt = $pdo->prepare("
            SELECT 
                latitude, 
                longitude, 
                velocidade, 
                timestamp,
                precisao,
                altitude
            FROM rastreamento_tempo_real 
            WHERE viagem_id = ? 
            ORDER BY timestamp ASC
        ");
        $stmt->execute([$viagemId]);
        $pontos = $stmt->fetchAll();
        
        $response['total_pontos'] = count($pontos);
        $response['pontos_gps'] = $pontos;
        
        if (count($pontos) > 0) {
            $response['primeiro_ponto'] = $pontos[0];
            $response['ultimo_ponto'] = $pontos[count($pontos) - 1];
        }
        
        // Estatísticas adicionais
        if (count($pontos) > 1) {
            $distanciaTotal = 0;
            for ($i = 1; $i < count($pontos); $i++) {
                $distanciaTotal += calcularDistancia(
                    $pontos[$i-1]['latitude'], $pontos[$i-1]['longitude'],
                    $pontos[$i]['latitude'], $pontos[$i]['longitude']
                );
            }
            $response['distancia_total_gps'] = round($distanciaTotal, 2);
        }
    } else {
        $response['mensagem'] = 'Tabela rastreamento_tempo_real não existe. Sistema só tem início/fim.';
        
        // Buscar apenas pontos início/fim da viagem
        $stmt = $pdo->prepare("
            SELECT 
                latitude_inicial, longitude_inicial,
                latitude_final, longitude_final,
                data_inicio, data_fim
            FROM viagens 
            WHERE id = ?
        ");
        $stmt->execute([$viagemId]);
        $viagem = $stmt->fetch();
        
        if ($viagem) {
            $response['pontos_simples'] = [
                'inicio' => [
                    'latitude' => $viagem['latitude_inicial'],
                    'longitude' => $viagem['longitude_inicial'],
                    'timestamp' => $viagem['data_inicio']
                ],
                'fim' => [
                    'latitude' => $viagem['latitude_final'],
                    'longitude' => $viagem['longitude_final'],
                    'timestamp' => $viagem['data_fim']
                ]
            ];
        }
    }
    
} catch (Exception $e) {
    $response = [
        'sucesso' => false,
        'erro' => $e->getMessage()
    ];
}

echo json_encode($response, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);

function calcularDistancia($lat1, $lon1, $lat2, $lon2) {
    $earthRadius = 6371; // km
    
    $dLat = deg2rad($lat2 - $lat1);
    $dLon = deg2rad($lon2 - $lon1);
    
    $a = sin($dLat/2) * sin($dLat/2) + 
         cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * 
         sin($dLon/2) * sin($dLon/2);
    
    $c = 2 * atan2(sqrt($a), sqrt(1-$a));
    
    return $earthRadius * $c;
}
?> 
