<?php
// Teste de envio de GPS para verificar se está sendo salvo corretamente
header('Content-Type: text/html; charset=utf-8');

// Configurações do banco
$host = 'localhost';
$dbname = 'pinheir3_controle_frotasV1.1';
$username = 'pinheir3_controle_frotasV1.1';
$password = '080880Gelboy';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "✅ Conexão com banco estabelecida<br><br>";
} catch(PDOException $e) {
    die("❌ Erro na conexão: " . $e->getMessage());
}

// Criar uma viagem de teste se não existir
$viagemId = 260; // ID fixo para teste

echo "<h2>🧪 TESTE DE ENVIO GPS - Viagem ID: $viagemId</h2>";

// Verificar se a viagem existe
$stmt = $pdo->prepare("SELECT * FROM viagens WHERE id = ?");
$stmt->execute([$viagemId]);
$viagem = $stmt->fetch();

if (!$viagem) {
    echo "❌ Viagem $viagemId não encontrada. Criando viagem de teste...<br>";
    
    $stmt = $pdo->prepare("
        INSERT INTO viagens (
            tecnico_id, veiculo_id, data_inicio, status, 
            km_inicial, km_final, latitude_inicial, longitude_inicial
        ) VALUES (?, ?, NOW(), 'em_andamento', ?, ?, ?, ?)
    ");
    
    $stmt->execute([4, 1, 100, 100, -10.9091, -37.0677]);
    $viagemId = $pdo->lastInsertId();
    echo "✅ Viagem de teste criada com ID: $viagemId<br><br>";
} else {
    echo "✅ Viagem $viagemId encontrada<br>";
    echo "Status: " . $viagem['status'] . "<br>";
    echo "Data início: " . $viagem['data_inicio'] . "<br><br>";
}

// Simular envio de pontos GPS
echo "<h3>📡 Simulando envio de pontos GPS...</h3>";

$pontos = [
    ['lat' => -10.9091, 'lng' => -37.0677, 'vel' => 0, 'prec' => 5],
    ['lat' => -10.9092, 'lng' => -37.0678, 'vel' => 10, 'prec' => 8],
    ['lat' => -10.9093, 'lng' => -37.0679, 'vel' => 15, 'prec' => 6],
    ['lat' => -10.9094, 'lng' => -37.0680, 'vel' => 20, 'prec' => 7],
    ['lat' => -10.9095, 'lng' => -37.0681, 'vel' => 25, 'prec' => 5]
];

foreach ($pontos as $i => $ponto) {
    echo "📍 Enviando ponto " . ($i + 1) . ": {$ponto['lat']}, {$ponto['lng']}<br>";
    
    // Simular POST para atualizar-posicao
    $postData = http_build_query([
        'acao' => 'atualizar-posicao',
        'viagem_id' => $viagemId,
        'latitude' => $ponto['lat'],
        'longitude' => $ponto['lng'],
        'velocidade' => $ponto['vel'],
        'precisao' => $ponto['prec'],
        'altitude' => 10,
        'provider' => 'gps',
        'timestamp' => time() * 1000
    ]);
    
    // Fazer requisição para a API
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://sistemas.pinheiroempresas.com.br/controlefrota/backend-php/api-simples-v2.php');
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Content-Type: application/x-www-form-urlencoded',
        'Content-Length: ' . strlen($postData)
    ]);
    
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    
    if ($httpCode == 200) {
        echo "✅ Ponto " . ($i + 1) . " enviado com sucesso<br>";
        echo "Resposta: $response<br><br>";
    } else {
        echo "❌ Erro ao enviar ponto " . ($i + 1) . " (HTTP $httpCode)<br>";
        echo "Resposta: $response<br><br>";
    }
    
    sleep(1); // Pausa de 1 segundo entre pontos
}

// Verificar se os pontos foram salvos
echo "<h3>🔍 Verificando pontos salvos...</h3>";

$stmt = $pdo->prepare("SELECT COUNT(*) as total FROM rastreamento_tempo_real WHERE viagem_id = ?");
$stmt->execute([$viagemId]);
$total = $stmt->fetch()['total'];

echo "📊 Total de pontos na tabela rastreamento_tempo_real: $total<br>";

if ($total > 0) {
    echo "✅ Pontos estão sendo salvos corretamente!<br><br>";
    
    // Mostrar detalhes dos pontos
    $stmt = $pdo->prepare("SELECT * FROM rastreamento_tempo_real WHERE viagem_id = ? ORDER BY id DESC LIMIT 5");
    $stmt->execute([$viagemId]);
    $pontosSalvos = $stmt->fetchAll();
    
    echo "<h4>📋 Últimos pontos salvos:</h4>";
    echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
    echo "<tr><th>ID</th><th>Latitude</th><th>Longitude</th><th>Velocidade</th><th>Precisão</th><th>Timestamp</th></tr>";
    
    foreach ($pontosSalvos as $ponto) {
        echo "<tr>";
        echo "<td>{$ponto['id']}</td>";
        echo "<td>{$ponto['latitude']}</td>";
        echo "<td>{$ponto['longitude']}</td>";
        echo "<td>{$ponto['velocidade']}</td>";
        echo "<td>{$ponto['precisao']}</td>";
        echo "<td>" . date('H:i:s', $ponto['timestamp'] / 1000) . "</td>";
        echo "</tr>";
    }
    echo "</table><br>";
    
} else {
    echo "❌ NENHUM PONTO SALVO! Problema na API atualizar-posicao<br><br>";
}

// Verificar viagem atualizada
echo "<h3>📋 Verificando viagem atualizada...</h3>";

$stmt = $pdo->prepare("SELECT * FROM viagens WHERE id = ?");
$stmt->execute([$viagemId]);
$viagemAtualizada = $stmt->fetch();

echo "Viagem ID: {$viagemAtualizada['id']}<br>";
echo "Latitude inicial: " . ($viagemAtualizada['latitude_inicial'] ?? 'NULL') . "<br>";
echo "Longitude inicial: " . ($viagemAtualizada['longitude_inicial'] ?? 'NULL') . "<br>";
echo "Latitude final: " . ($viagemAtualizada['latitude_final'] ?? 'NULL') . "<br>";
echo "Longitude final: " . ($viagemAtualizada['longitude_final'] ?? 'NULL') . "<br>";
echo "KM GPS final: " . ($viagemAtualizada['km_gps_final'] ?? 'NULL') . "<br>";
echo "Trajeto: " . (empty($viagemAtualizada['trajeto']) ? 'NULL' : 'Preenchido') . "<br>";

if ($viagemAtualizada['latitude_inicial'] && $viagemAtualizada['longitude_inicial']) {
    echo "✅ Viagem com coordenadas iniciais salvas!<br>";
} else {
    echo "❌ Viagem SEM coordenadas iniciais!<br>";
}

echo "<br><h3>🎯 CONCLUSÃO</h3>";
if ($total > 0 && $viagemAtualizada['latitude_inicial']) {
    echo "✅ SISTEMA FUNCIONANDO! Pontos GPS estão sendo salvos corretamente.<br>";
    echo "✅ O app Android deve conseguir enviar dados para o servidor.<br>";
} else {
    echo "❌ PROBLEMA IDENTIFICADO! Verificar API atualizar-posicao.<br>";
    echo "❌ Possíveis causas: erro na API, problema de permissões, ou dados inválidos.<br>";
}
?>
