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

try {
    $pdo = new PDO('mysql:host=localhost;dbname=controle_frotas;charset=utf8', 'root', '');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    // Verificar se há viagens em andamento
    $stmt = $pdo->query("SELECT COUNT(*) as total FROM viagens WHERE data_fim IS NULL");
    $totalAndamento = $stmt->fetch()['total'];
    
    // Se não há viagens em andamento, criar uma para teste
    if ($totalAndamento == 0) {
        // Verificar se há motoristas e veículos
        $stmt = $pdo->query("SELECT id, nome FROM motoristas LIMIT 1");
        $motorista = $stmt->fetch();
        
        $stmt = $pdo->query("SELECT id, modelo, placa 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'
            ]);
        }
    }
    
    // Buscar viagens em andamento
    $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,
            COALESCE(m.nome, 'Motorista não identificado') as motorista_nome,
            COALESCE(m.matricula, 'N/A') as motorista_matricula,
            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 v.tecnico_id = m.id
        LEFT JOIN veiculos ve ON v.veiculo_id = ve.id
        WHERE v.data_fim IS NULL
        ORDER BY v.data_inicio DESC
    ");
    
    $viagens = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    // Processar dados
    $dadosProcessados = [];
    foreach ($viagens 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' => intval($viagem['id']),
            'cliente' => $viagem['cliente'],
            'motivo' => $viagem['motivo'],
            'motorista_nome' => $viagem['motorista_nome'],
            'motorista_matricula' => $viagem['motorista_matricula'],
            'motorista_completo' => $viagem['motorista_completo'],
            'veiculo_modelo' => $viagem['veiculo_modelo'],
            'veiculo_placa' => $viagem['veiculo_placa'],
            'veiculo_completo' => $viagem['veiculo_completo'],
            'duracao_minutos' => intval($viagem['duracao_minutos']),
            'posicao_atual' => $posicaoAtual,
            'total_pontos' => count($trajeto),
            'trajeto_pontos' => $trajeto,
            'endereco_inicial_formatado' => $viagem['endereco_inicial'] ?: 'GPS: ' . $viagem['latitude_inicial'] . ', ' . $viagem['longitude_inicial'],
            'endereco_final_formatado' => 'Em andamento...',
            'status' => 'em_andamento',
            'status_texto' => 'Em Andamento'
        ];
    }
    
    $resposta = [
        'sucesso' => true,
        'dados' => $dadosProcessados,
        'mensagem' => 'Viagens em andamento carregadas',
        'debug' => [
            'total_viagens_andamento' => count($dadosProcessados),
            'timestamp' => date('Y-m-d H:i:s')
        ]
    ];
    
    echo json_encode($resposta, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
    
} catch (Exception $e) {
    $resposta = [
        'sucesso' => false,
        'dados' => null,
        'mensagem' => 'Erro: ' . $e->getMessage(),
        'debug' => [
            'linha' => $e->getLine(),
            'arquivo' => $e->getFile()
        ]
    ];
    
    echo json_encode($resposta, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
}
?> 
