<?php
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');

// Configurações do banco de dados
$configs = [
    ['host' => 'localhost', 'user' => 'pinheir3', 'password' => '080880Gelboy', 'database' => 'pinheir3_controle_frotasV1.1'],
    ['host' => 'localhost', 'user' => 'root', 'password' => '080880Gelboy', 'database' => 'pinheir3_controle_frotasV1.1'],
    ['host' => 'localhost', 'user' => 'pinheir3', 'password' => '', 'database' => 'pinheir3_controle_frotasV1.1'],
    ['host' => 'localhost', 'user' => 'root', 'password' => '', 'database' => 'controle_frotas']
];

$pdo = null;
$configUsada = null;

// Tentar conectar
foreach ($configs as $config) {
    try {
        $pdo = new PDO(
            "mysql:host={$config['host']};dbname={$config['database']};charset=utf8mb4",
            $config['user'],
            $config['password'],
            [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
        );
        $configUsada = $config;
        break;
    } catch (PDOException $e) {
        continue;
    }
}

if (!$pdo) {
    echo json_encode(['erro' => 'Não foi possível conectar com o banco']);
    exit;
}

try {
    $debug = [];
    
    // 1. Todas as viagens (incluindo finalizadas)
    $stmt = $pdo->query("
        SELECT 
            id, 
            cliente, 
            motivo, 
            tecnico_id, 
            veiculo_id, 
            data_inicio, 
            data_fim,
            latitude_inicial, 
            longitude_inicial, 
            latitude_final, 
            longitude_final,
            km_inicial,
            km_final,
            trajeto,
            observacoes,
            sincronizado
        FROM viagens 
        ORDER BY data_inicio DESC 
        LIMIT 10
    ");
    $todasViagens = $stmt->fetchAll(PDO::FETCH_ASSOC);
    $debug['todas_viagens'] = $todasViagens;
    
    // 2. Só viagens ativas (sem data_fim)
    $stmt = $pdo->query("
        SELECT 
            id, 
            cliente, 
            motivo, 
            tecnico_id, 
            veiculo_id, 
            data_inicio, 
            data_fim,
            latitude_inicial, 
            longitude_inicial, 
            latitude_final, 
            longitude_final,
            CASE 
                WHEN data_fim IS NULL THEN 'ATIVA'
                ELSE 'FINALIZADA'
            END as status_viagem,
            CASE 
                WHEN latitude_inicial IS NOT NULL AND longitude_inicial IS NOT NULL THEN 'COM_GPS'
                ELSE 'SEM_GPS'
            END as status_gps
        FROM viagens 
        WHERE data_fim IS NULL
        ORDER BY data_inicio DESC
    ");
    $viagensAtivas = $stmt->fetchAll(PDO::FETCH_ASSOC);
    $debug['viagens_ativas'] = $viagensAtivas;
    
    // 3. Verificar se há problemas com as coordenadas
    $stmt = $pdo->query("
        SELECT 
            id,
            cliente,
            latitude_inicial,
            longitude_inicial,
            latitude_inicial IS NULL as lat_nulo,
            longitude_inicial IS NULL as lng_nulo,
            latitude_inicial = 0 as lat_zero,
            longitude_inicial = 0 as lng_zero,
            latitude_inicial = '' as lat_vazio,
            longitude_inicial = '' as lng_vazio
        FROM viagens 
        WHERE data_fim IS NULL
    ");
    $coordenadasCheck = $stmt->fetchAll(PDO::FETCH_ASSOC);
    $debug['coordenadas_check'] = $coordenadasCheck;
    
    // 4. Testar a query exata da API
    $stmt = $pdo->query("
        SELECT 
            v.id,
            v.cliente,
            v.motivo,
            v.tecnico_id,
            v.veiculo_id,
            v.data_inicio,
            v.latitude_inicial,
            v.longitude_inicial,
            v.latitude_final,
            v.longitude_final,
            v.trajeto,
            v.km_inicial,
            TIMESTAMPDIFF(MINUTE, v.data_inicio, NOW()) as duracao_minutos
        FROM viagens v
        WHERE v.data_fim IS NULL
        ORDER BY v.data_inicio DESC
    ");
    $queryApi = $stmt->fetchAll(PDO::FETCH_ASSOC);
    $debug['query_api_resultado'] = $queryApi;
    
    // 5. Verificar tabelas existentes
    $stmt = $pdo->query("SHOW TABLES");
    $tabelas = $stmt->fetchAll(PDO::FETCH_COLUMN);
    $debug['tabelas_existentes'] = $tabelas;
    
    // 6. Estrutura da tabela viagens
    $stmt = $pdo->query("DESCRIBE viagens");
    $estrutura = $stmt->fetchAll(PDO::FETCH_ASSOC);
    $debug['estrutura_viagens'] = $estrutura;
    
    // 7. Contar registros
    $stmt = $pdo->query("SELECT COUNT(*) as total FROM viagens");
    $totalViagens = $stmt->fetch()['total'];
    
    $stmt = $pdo->query("SELECT COUNT(*) as ativas FROM viagens WHERE data_fim IS NULL");
    $viagensAtivasCount = $stmt->fetch()['ativas'];
    
    $stmt = $pdo->query("SELECT COUNT(*) as com_gps FROM viagens WHERE data_fim IS NULL AND latitude_inicial IS NOT NULL AND longitude_inicial IS NOT NULL");
    $viagensComGpsCount = $stmt->fetch()['com_gps'];
    
    $debug['contadores'] = [
        'total_viagens' => $totalViagens,
        'viagens_ativas' => $viagensAtivasCount,
        'viagens_com_gps' => $viagensComGpsCount
    ];
    
    // Resultado final
    echo json_encode([
        'sucesso' => true,
        'conexao' => $configUsada,
        'timestamp' => date('Y-m-d H:i:s'),
        'debug' => $debug
    ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
    
} catch (Exception $e) {
    echo json_encode([
        'erro' => true,
        'mensagem' => $e->getMessage(),
        'linha' => $e->getLine(),
        'arquivo' => $e->getFile()
    ], JSON_PRETTY_PRINT);
}
?> 
