<?php
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST');
header('Access-Control-Allow-Headers: Content-Type');

// Usar conexão correta
if (file_exists('conexao.php')) {
    require_once 'conexao.php';
} else {
    // Fallback - usar configuração direta
    $config = [
        'host' => 'localhost',
        'dbname' => 'pinheir3_controle_frotasV1.1',
        'username' => 'pinheir3_admin',
        'password' => '080880Gelboy'
    ];
    
    try {
        $pdo = new PDO(
            "mysql:host={$config['host']};dbname={$config['dbname']};charset=utf8mb4",
            $config['username'],
            $config['password'],
            [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
        );
    } catch (PDOException $e) {
        logDebug("❌ ERRO CONEXÃO: " . $e->getMessage());
        http_response_code(500);
        echo json_encode(['erro' => 'Erro de conexão com banco']);
        exit;
    }
}

// Log para debug
function logDebug($mensagem) {
    $data = date('Y-m-d H:i:s');
    file_put_contents('log-rastreamento.txt', "[$data] $mensagem\n", FILE_APPEND);
}

// Pegar dados do POST
$json = file_get_contents('php://input');
$data = json_decode($json, true);

logDebug("Dados recebidos: " . print_r($data, true));

// Validar dados
if (!isset($data['viagem_id']) || !isset($data['latitude']) || !isset($data['longitude'])) {
    http_response_code(400);
    echo json_encode(['erro' => 'Dados incompletos']);
    exit;
}

try {
    // Verificar se a viagem existe e está ativa
    $sql = "SELECT id, tecnico_id FROM viagens WHERE id = ? AND data_fim IS NULL";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([$data['viagem_id']]);
    $viagem = $stmt->fetch();
    
    if (!$viagem) {
        logDebug("Viagem não encontrada ou já finalizada: " . $data['viagem_id']);
        http_response_code(404);
        echo json_encode(['erro' => 'Viagem não encontrada ou já finalizada']);
        exit;
    }
    
    // Inserir ponto
    $sql = "INSERT INTO rastreamento_tempo_real 
            (viagem_id, latitude, longitude, velocidade, precisao, altitude, battery_level)
            VALUES 
            (?, ?, ?, ?, ?, ?, ?)";
            
    $stmt = $pdo->prepare($sql);
    $stmt->execute([
        $data['viagem_id'],
        $data['latitude'],
        $data['longitude'],
        $data['velocidade'] ?? 0,
        $data['precisao'] ?? 0,
        $data['altitude'] ?? 0,
        $data['batteryLevel'] ?? 100
    ]);
    
    // Atualizar status do técnico
    $sql = "INSERT INTO status_tecnicos 
            (tecnico_id, ultima_latitude, ultima_longitude, ultimo_update, status)
            VALUES 
            (?, ?, ?, NOW(), 'online')
            ON DUPLICATE KEY UPDATE
            ultima_latitude = VALUES(ultima_latitude),
            ultima_longitude = VALUES(ultima_longitude),
            ultimo_update = NOW(),
            status = 'online'";
            
    $stmt = $pdo->prepare($sql);
    $stmt->execute([
        $viagem['tecnico_id'],
        $data['latitude'],
        $data['longitude']
    ]);
    
    logDebug("✅ Ponto salvo com sucesso para viagem " . $data['viagem_id']);
    
    echo json_encode([
        'sucesso' => true,
        'mensagem' => 'Localização atualizada'
    ]);
    
} catch (Exception $e) {
    logDebug("❌ ERRO: " . $e->getMessage());
    http_response_code(500);
    echo json_encode([
        'erro' => 'Erro ao salvar localização',
        'detalhes' => $e->getMessage()
    ]);
} 
