<?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 {
    $acao = $_GET['acao'] ?? 'verificar';
    $viagemId = $_GET['viagem_id'] ?? null;
    
    if ($acao === 'ativar') {
        if (!$viagemId) {
            throw new Exception('ID da viagem é obrigatório');
        }
        
        // Tornar a viagem ativa (remover data_fim)
        $sql = "UPDATE viagens SET data_fim = NULL WHERE id = :viagem_id";
        $stmt = $pdo->prepare($sql);
        $result = $stmt->execute(['viagem_id' => $viagemId]);
        
        if ($result) {
            // Buscar dados da viagem atualizada
            $stmt = $pdo->prepare("
                SELECT 
                    id, cliente, motivo, data_inicio, 
                    latitude_inicial, longitude_inicial,
                    CASE 
                        WHEN data_fim IS NULL THEN 'ATIVA'
                        ELSE 'FINALIZADA'
                    END as status
                FROM viagens 
                WHERE id = :viagem_id
            ");
            $stmt->execute(['viagem_id' => $viagemId]);
            $viagem = $stmt->fetch(PDO::FETCH_ASSOC);
            
            echo json_encode([
                'sucesso' => true,
                'mensagem' => 'Viagem ativada com sucesso!',
                'viagem' => $viagem,
                'timestamp' => date('Y-m-d H:i:s')
            ]);
        } else {
            echo json_encode(['erro' => 'Falha ao ativar viagem']);
        }
        
    } elseif ($acao === 'ativar_primeira') {
        // Ativar a primeira viagem disponível que tenha GPS
        $sql = "
            UPDATE viagens 
            SET data_fim = NULL 
            WHERE latitude_inicial IS NOT NULL 
            AND longitude_inicial IS NOT NULL 
            AND latitude_inicial != 0 
            AND longitude_inicial != 0
            LIMIT 1
        ";
        
        $stmt = $pdo->prepare($sql);
        $result = $stmt->execute();
        
        $linhasAfetadas = $stmt->rowCount();
        
        if ($linhasAfetadas > 0) {
            // Buscar a viagem que foi ativada
            $stmt = $pdo->query("
                SELECT 
                    id, cliente, motivo, data_inicio, 
                    latitude_inicial, longitude_inicial,
                    TIMESTAMPDIFF(MINUTE, data_inicio, NOW()) as duracao_minutos
                FROM viagens 
                WHERE data_fim IS NULL 
                AND latitude_inicial IS NOT NULL 
                AND longitude_inicial IS NOT NULL
                ORDER BY data_inicio DESC
                LIMIT 1
            ");
            $viagem = $stmt->fetch(PDO::FETCH_ASSOC);
            
            echo json_encode([
                'sucesso' => true,
                'mensagem' => 'Viagem ativada automaticamente!',
                'viagem' => $viagem,
                'timestamp' => date('Y-m-d H:i:s')
            ]);
        } else {
            echo json_encode([
                'erro' => true,
                'mensagem' => 'Nenhuma viagem com GPS encontrada para ativar'
            ]);
        }
        
    } else {
        // Verificar viagens disponíveis
        $stmt = $pdo->query("
            SELECT 
                id, 
                cliente, 
                motivo, 
                data_inicio, 
                data_fim,
                latitude_inicial, 
                longitude_inicial,
                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 
                         AND latitude_inicial != 0 AND longitude_inicial != 0 THEN 'COM_GPS'
                    ELSE 'SEM_GPS'
                END as status_gps
            FROM viagens 
            ORDER BY data_inicio DESC 
            LIMIT 10
        ");
        
        $viagens = $stmt->fetchAll(PDO::FETCH_ASSOC);
        
        // Contar viagens por status
        $ativas = count(array_filter($viagens, fn($v) => $v['status_viagem'] === 'ATIVA'));
        $comGps = count(array_filter($viagens, fn($v) => $v['status_gps'] === 'COM_GPS'));
        $ativasComGps = count(array_filter($viagens, fn($v) => $v['status_viagem'] === 'ATIVA' && $v['status_gps'] === 'COM_GPS'));
        
        echo json_encode([
            'sucesso' => true,
            'viagens' => $viagens,
            'estatisticas' => [
                'total' => count($viagens),
                'ativas' => $ativas,
                'com_gps' => $comGps,
                'ativas_com_gps' => $ativasComGps
            ],
            'timestamp' => date('Y-m-d H:i:s')
        ]);
    }
    
} catch (Exception $e) {
    echo json_encode([
        'erro' => true,
        'mensagem' => $e->getMessage(),
        'linha' => $e->getLine()
    ]);
}
?> 
