<?php
session_start();

// Verificar se está logado
if (!isset($_SESSION['operador_gps_id'])) {
    header('Location: login.php');
    exit;
}

require_once '../config/database.php';

$operador = [
    'id' => $_SESSION['operador_gps_id'],
    'nome' => $_SESSION['operador_gps_nome'],
    'usuario' => $_SESSION['operador_gps_usuario'],
    'nivel' => $_SESSION['operador_gps_nivel']
];

$id = $_GET['id'] ?? null;
$tipo = $_GET['tipo'] ?? null; // 'viagem' ou 'rota'

if (!$id || !$tipo) {
    die('Parâmetros inválidos');
}

$sucesso = '';
$erro = '';

// Processar liberação
if ($_POST) {
    try {
        $pdo = Database::getConnection();
        
        $observacoes = $_POST['observacoes'] ?? '';
        $ip_liberacao = $_SERVER['REMOTE_ADDR'] ?? 'unknown';
        $user_agent = $_SERVER['HTTP_USER_AGENT'] ?? 'unknown';
        
        if ($tipo === 'viagem') {
            // Atualizar viagem
            $stmt = $pdo->prepare("
                UPDATE viagens 
                SET 
                    operador_gps_id = ?,
                    operador_gps_nome = ?,
                    data_liberacao_partida = NOW(),
                    observacoes_operador = ?,
                    ip_liberacao = ?,
                    user_agent_liberacao = ?
                WHERE id = ?
            ");
            $stmt->execute([
                $operador['id'],
                $operador['nome'],
                $observacoes,
                $ip_liberacao,
                $user_agent,
                $id
            ]);
            
            // Buscar dados da viagem para o log
            $stmt = $pdo->prepare("
                SELECT v.*, m.nome as tecnico_nome, ve.modelo as veiculo_modelo, ve.placa as veiculo_placa
                FROM viagens v
                LEFT JOIN motoristas m ON (v.tecnico_id = m.id OR v.tecnico_id = m.nome)
                LEFT JOIN veiculos ve ON v.veiculo_id = ve.id
                WHERE v.id = ?
            ");
            $stmt->execute([$id]);
            $viagem = $stmt->fetch();
            
            // Inserir log
            $stmt = $pdo->prepare("
                INSERT INTO logs_liberacao_partida 
                (operador_gps_id, operador_gps_nome, tipo_liberacao, registro_id, veiculo_id, veiculo_modelo, veiculo_placa, tecnico_id, tecnico_nome, cliente, motivo, ip_liberacao, user_agent_liberacao, observacoes)
                VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
            ");
            $stmt->execute([
                $operador['id'],
                $operador['nome'],
                'viagem',
                $id,
                $viagem['veiculo_id'],
                $viagem['veiculo_modelo'],
                $viagem['veiculo_placa'],
                $viagem['tecnico_id'],
                $viagem['tecnico_nome'],
                $viagem['cliente'],
                $viagem['motivo'],
                $ip_liberacao,
                $user_agent,
                $observacoes
            ]);
            
        } elseif ($tipo === 'rota') {
            // Atualizar rota
            $stmt = $pdo->prepare("
                UPDATE solicitacoes_rotas 
                SET 
                    operador_gps_id = ?,
                    operador_gps_nome = ?,
                    data_liberacao_partida = NOW(),
                    observacoes_operador = ?,
                    ip_liberacao = ?,
                    user_agent_liberacao = ?
                WHERE id = ?
            ");
            $stmt->execute([
                $operador['id'],
                $operador['nome'],
                $observacoes,
                $ip_liberacao,
                $user_agent,
                $id
            ]);
            
            // Buscar dados da rota para o log
            $stmt = $pdo->prepare("
                SELECT sr.*, m.nome as tecnico_nome, ve.modelo as veiculo_modelo, ve.placa as veiculo_placa
                FROM solicitacoes_rotas sr
                LEFT JOIN motoristas m ON sr.motorista_id = m.id
                LEFT JOIN veiculos ve ON sr.veiculo_id = ve.id
                WHERE sr.id = ?
            ");
            $stmt->execute([$id]);
            $rota = $stmt->fetch();
            
            // Inserir log
            $stmt = $pdo->prepare("
                INSERT INTO logs_liberacao_partida 
                (operador_gps_id, operador_gps_nome, tipo_liberacao, registro_id, veiculo_id, veiculo_modelo, veiculo_placa, tecnico_id, tecnico_nome, cliente, motivo, ip_liberacao, user_agent_liberacao, observacoes)
                VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
            ");
            $stmt->execute([
                $operador['id'],
                $operador['nome'],
                'rota',
                $id,
                $rota['veiculo_id'],
                $rota['veiculo_modelo'],
                $rota['veiculo_placa'],
                $rota['motorista_id'],
                $rota['tecnico_nome'],
                $rota['titulo'],
                $rota['descricao'],
                $ip_liberacao,
                $user_agent,
                $observacoes
            ]);
        }
        
        $sucesso = ucfirst($tipo) . " #$id liberada com sucesso!";
        
    } catch (Exception $e) {
        $erro = 'Erro ao liberar partida: ' . $e->getMessage();
    }
}

// Buscar dados do registro
try {
    $pdo = Database::getConnection();
    
    if ($tipo === 'viagem') {
        $stmt = $pdo->prepare("
            SELECT 
                v.*,
                m.nome as tecnico_nome,
                ve.modelo as veiculo_modelo,
                ve.placa as veiculo_placa
            FROM viagens v
            LEFT JOIN motoristas m ON (v.tecnico_id = m.id OR v.tecnico_id = m.nome)
            LEFT JOIN veiculos ve ON v.veiculo_id = ve.id
            WHERE v.id = ?
        ");
        $stmt->execute([$id]);
        $registro = $stmt->fetch();
        
        if (!$registro) {
            die('Viagem não encontrada');
        }
        
    } elseif ($tipo === 'rota') {
        $stmt = $pdo->prepare("
            SELECT 
                sr.*,
                m.nome as tecnico_nome,
                ve.modelo as veiculo_modelo,
                ve.placa as veiculo_placa
            FROM solicitacoes_rotas sr
            LEFT JOIN motoristas m ON sr.motorista_id = m.id
            LEFT JOIN veiculos ve ON sr.veiculo_id = ve.id
            WHERE sr.id = ?
        ");
        $stmt->execute([$id]);
        $registro = $stmt->fetch();
        
        if (!$registro) {
            die('Rota não encontrada');
        }
    }
    
} catch (Exception $e) {
    die('Erro ao carregar dados: ' . $e->getMessage());
}
?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Liberar Partida - Operador GPS</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        
        body {
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            min-height: 100vh;
            display: flex;
            align-items: center;
            justify-content: center;
            padding: 20px;
        }
        
        .container {
            background: white;
            border-radius: 15px;
            box-shadow: 0 10px 30px rgba(0,0,0,0.2);
            width: 100%;
            max-width: 600px;
            overflow: hidden;
        }
        
        .header {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            padding: 30px;
            text-align: center;
        }
        
        .header h1 {
            font-size: 2em;
            margin-bottom: 10px;
        }
        
        .header .operador {
            opacity: 0.9;
            font-size: 1.1em;
        }
        
        .content {
            padding: 30px;
        }
        
        .info-card {
            background: #f8f9fa;
            border-radius: 10px;
            padding: 20px;
            margin-bottom: 30px;
        }
        
        .info-row {
            display: flex;
            justify-content: space-between;
            margin-bottom: 10px;
            padding: 8px 0;
            border-bottom: 1px solid #eee;
        }
        
        .info-row:last-child {
            border-bottom: none;
            margin-bottom: 0;
        }
        
        .info-label {
            font-weight: 600;
            color: #333;
        }
        
        .info-value {
            color: #666;
            text-align: right;
        }
        
        .form-group {
            margin-bottom: 20px;
        }
        
        .form-group label {
            display: block;
            margin-bottom: 8px;
            font-weight: 600;
            color: #333;
        }
        
        .form-group textarea {
            width: 100%;
            padding: 12px;
            border: 2px solid #e1e5e9;
            border-radius: 8px;
            font-size: 14px;
            font-family: inherit;
            resize: vertical;
            min-height: 100px;
        }
        
        .form-group textarea:focus {
            outline: none;
            border-color: #667eea;
        }
        
        .btn-group {
            display: flex;
            gap: 15px;
            margin-top: 30px;
        }
        
        .btn {
            flex: 1;
            padding: 15px;
            border: none;
            border-radius: 8px;
            font-size: 16px;
            font-weight: 600;
            cursor: pointer;
            transition: all 0.3s ease;
        }
        
        .btn-success {
            background: linear-gradient(135deg, #28a745 0%, #20c997 100%);
            color: white;
        }
        
        .btn-success:hover {
            transform: translateY(-2px);
            box-shadow: 0 5px 15px rgba(40, 167, 69, 0.3);
        }
        
        .btn-secondary {
            background: #6c757d;
            color: white;
        }
        
        .btn-secondary:hover {
            background: #545b62;
        }
        
        .success {
            background: #d4edda;
            color: #155724;
            padding: 15px;
            border-radius: 8px;
            margin-bottom: 20px;
            text-align: center;
            font-weight: 600;
        }
        
        .error {
            background: #f8d7da;
            color: #721c24;
            padding: 15px;
            border-radius: 8px;
            margin-bottom: 20px;
            text-align: center;
            font-weight: 600;
        }
        
        .badge {
            display: inline-block;
            padding: 4px 12px;
            border-radius: 20px;
            font-size: 12px;
            font-weight: 600;
            text-transform: uppercase;
        }
        
        .badge-viagem {
            background: #e3f2fd;
            color: #1976d2;
        }
        
        .badge-rota {
            background: #f3e5f5;
            color: #7b1fa2;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="header">
            <h1>🚗 Liberar Partida</h1>
            <div class="operador">
                Operador: <?php echo htmlspecialchars($operador['nome']); ?>
            </div>
        </div>
        
        <div class="content">
            <?php if ($sucesso): ?>
                <div class="success">
                    ✅ <?php echo htmlspecialchars($sucesso); ?>
                </div>
                <div class="btn-group">
                    <button class="btn btn-secondary" onclick="window.close()">Fechar</button>
                    <button class="btn btn-success" onclick="window.opener.location.reload(); window.close()">
                        Fechar e Atualizar
                    </button>
                </div>
            <?php else: ?>
                <?php if ($erro): ?>
                    <div class="error">
                        ❌ <?php echo htmlspecialchars($erro); ?>
                    </div>
                <?php endif; ?>
                
                <div class="info-card">
                    <div class="info-row">
                        <span class="info-label">Tipo:</span>
                        <span class="info-value">
                            <span class="badge badge-<?php echo $tipo; ?>">
                                <?php echo ucfirst($tipo); ?>
                            </span>
                        </span>
                    </div>
                    <div class="info-row">
                        <span class="info-label">ID:</span>
                        <span class="info-value">#<?php echo $id; ?></span>
                    </div>
                    <div class="info-row">
                        <span class="info-label">Cliente:</span>
                        <span class="info-value"><?php echo htmlspecialchars($tipo === 'viagem' ? $registro['cliente'] : $registro['titulo']); ?></span>
                    </div>
                    <div class="info-row">
                        <span class="info-label">Motorista:</span>
                        <span class="info-value"><?php echo htmlspecialchars($registro['tecnico_nome'] ?? 'N/A'); ?></span>
                    </div>
                    <div class="info-row">
                        <span class="info-label">Veículo:</span>
                        <span class="info-value"><?php echo htmlspecialchars($registro['veiculo_modelo']); ?> (<?php echo htmlspecialchars($registro['veiculo_placa']); ?>)</span>
                    </div>
                    <div class="info-row">
                        <span class="info-label">Motivo/Descrição:</span>
                        <span class="info-value"><?php echo htmlspecialchars($tipo === 'viagem' ? $registro['motivo'] : $registro['descricao']); ?></span>
                    </div>
                    <div class="info-row">
                        <span class="info-label">Data de Início:</span>
                        <span class="info-value"><?php echo date('d/m/Y H:i', strtotime($tipo === 'viagem' ? $registro['data_inicio'] : $registro['created_at'])); ?></span>
                    </div>
                </div>
                
                <form method="POST">
                    <div class="form-group">
                        <label for="observacoes">Observações (opcional):</label>
                        <textarea id="observacoes" name="observacoes" 
                                  placeholder="Adicione observações sobre a liberação da partida..."></textarea>
                    </div>
                    
                    <div class="btn-group">
                        <button type="button" class="btn btn-secondary" onclick="window.close()">
                            Cancelar
                        </button>
                        <button type="submit" class="btn btn-success">
                            ✅ Liberar Partida
                        </button>
                    </div>
                </form>
            <?php endif; ?>
        </div>
    </div>
</body>
</html>
