<?php
require_once __DIR__ . '/../config/bootstrap.php';

use ControleFrotas\Config\Database;

header('Content-Type: text/html; charset=utf-8');

echo "<h1>🧪 Teste: Finalizar Viagem com Atualização de Solicitação</h1>";

try {
    $pdo = Database::getConnection();
    
    echo "<h2>📋 Passo 1: Verificar Solicitações Existentes</h2>";
    
    // Buscar solicitações aprovadas
    $stmt = $pdo->prepare("
        SELECT s.*, v.id as viagem_id, v.data_fim as viagem_data_fim
        FROM solicitacoes_viagem s
        LEFT JOIN viagens v ON s.tecnico_id = v.tecnico_id 
            AND s.cliente = v.cliente 
            AND s.motivo = v.motivo
        WHERE s.status = 'aprovada'
        ORDER BY s.created_at DESC
    ");
    $stmt->execute();
    $solicitacoes = $stmt->fetchAll();
    
    if (empty($solicitacoes)) {
        echo "<p style='color: orange;'>⚠️ Nenhuma solicitação aprovada encontrada</p>";
        echo "<p>Criando uma solicitação de teste...</p>";
        
        // Criar solicitação de teste
        $stmt = $pdo->prepare("
            INSERT INTO solicitacoes_viagem (
                tecnico_id, veiculo_id, cliente, motivo, km_inicial, 
                latitude_inicial, longitude_inicial, endereco_inicial, 
                cliente_id, status, gestor_id, observacoes, prioridade
            ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
        ");
        
        $stmt->execute([
            4, // tecnico_id
            6, // veiculo_id
            'Cliente Teste Finalização',
            'Teste de finalização com solicitação',
            100, // km_inicial
            -10.92654, // latitude_inicial
            -37.0731133, // longitude_inicial
            'Endereço inicial de teste',
            2, // cliente_id
            'aprovada', // status
            2, // gestor_id
            'Solicitação criada para teste de finalização',
            'normal' // prioridade
        ]);
        
        $solicitacaoId = $pdo->lastInsertId();
        echo "<p style='color: green;'>✅ Solicitação de teste criada com ID: $solicitacaoId</p>";
        
        // Recarregar solicitações
        $stmt = $pdo->prepare("
            SELECT s.*, v.id as viagem_id, v.data_fim as viagem_data_fim
            FROM solicitacoes_viagem s
            LEFT JOIN viagens v ON s.tecnico_id = v.tecnico_id 
                AND s.cliente = v.cliente 
                AND s.motivo = v.motivo
            WHERE s.status = 'aprovada'
            ORDER BY s.created_at DESC
        ");
        $stmt->execute();
        $solicitacoes = $stmt->fetchAll();
    }
    
    echo "<h3>📊 Solicitações Aprovadas:</h3>";
    echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
    echo "<tr><th>ID</th><th>Cliente</th><th>Motivo</th><th>Status</th><th>Viagem ID</th><th>Viagem Finalizada</th></tr>";
    
    foreach ($solicitacoes as $solicitacao) {
        $viagemFinalizada = $solicitacao['viagem_data_fim'] ? 'Sim' : 'Não';
        $cor = $solicitacao['viagem_data_fim'] ? 'green' : 'orange';
        
        echo "<tr>";
        echo "<td>{$solicitacao['id']}</td>";
        echo "<td>{$solicitacao['cliente']}</td>";
        echo "<td>{$solicitacao['motivo']}</td>";
        echo "<td>{$solicitacao['status']}</td>";
        echo "<td>{$solicitacao['viagem_id']}</td>";
        echo "<td style='color: $cor;'>$viagemFinalizada</td>";
        echo "</tr>";
    }
    echo "</table>";
    
    echo "<h2>🚗 Passo 2: Verificar Viagens Ativas</h2>";
    
    // Buscar viagens ativas (sem data_fim)
    $stmt = $pdo->prepare("
        SELECT v.*, s.id as solicitacao_id, s.status as solicitacao_status
        FROM viagens v
        LEFT JOIN solicitacoes_viagem s ON v.tecnico_id = s.tecnico_id 
            AND v.cliente = s.cliente 
            AND v.motivo = s.motivo
        WHERE v.data_fim IS NULL
        ORDER BY v.data_inicio DESC
    ");
    $stmt->execute();
    $viagensAtivas = $stmt->fetchAll();
    
    if (empty($viagensAtivas)) {
        echo "<p style='color: orange;'>⚠️ Nenhuma viagem ativa encontrada</p>";
        echo "<p>Criando uma viagem de teste...</p>";
        
        // Criar viagem de teste
        $stmt = $pdo->prepare("
            INSERT INTO viagens (
                tecnico_id, veiculo_id, cliente, motivo, km_inicial,
                data_inicio, latitude_inicial, longitude_inicial, endereco_inicial,
                cliente_id, sincronizado
            ) VALUES (?, ?, ?, ?, ?, NOW(), ?, ?, ?, ?, ?)
        ");
        
        $stmt->execute([
            4, // tecnico_id
            6, // veiculo_id
            'Cliente Teste Finalização',
            'Teste de finalização com solicitação',
            100, // km_inicial
            -10.92654, // latitude_inicial
            -37.0731133, // longitude_inicial
            'Endereço inicial de teste',
            2, // cliente_id
            true // sincronizado
        ]);
        
        $viagemId = $pdo->lastInsertId();
        echo "<p style='color: green;'>✅ Viagem de teste criada com ID: $viagemId</p>";
        
        // Recarregar viagens ativas
        $stmt = $pdo->prepare("
            SELECT v.*, s.id as solicitacao_id, s.status as solicitacao_status
            FROM viagens v
            LEFT JOIN solicitacoes_viagem s ON v.tecnico_id = s.tecnico_id 
                AND v.cliente = s.cliente 
                AND v.motivo = s.motivo
            WHERE v.data_fim IS NULL
            ORDER BY v.data_inicio DESC
        ");
        $stmt->execute();
        $viagensAtivas = $stmt->fetchAll();
    }
    
    echo "<h3>📊 Viagens Ativas:</h3>";
    echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
    echo "<tr><th>ID</th><th>Cliente</th><th>Motivo</th><th>Data Início</th><th>Solicitação ID</th><th>Status Solicitação</th></tr>";
    
    foreach ($viagensAtivas as $viagem) {
        echo "<tr>";
        echo "<td>{$viagem['id']}</td>";
        echo "<td>{$viagem['cliente']}</td>";
        echo "<td>{$viagem['motivo']}</td>";
        echo "<td>{$viagem['data_inicio']}</td>";
        echo "<td>{$viagem['solicitacao_id']}</td>";
        echo "<td>{$viagem['solicitacao_status']}</td>";
        echo "</tr>";
    }
    echo "</table>";
    
    echo "<h2>🏁 Passo 3: Testar Finalização</h2>";
    
    if (!empty($viagensAtivas)) {
        $viagemTeste = $viagensAtivas[0];
        echo "<p>Testando finalização da viagem ID: {$viagemTeste['id']}</p>";
        
        // Simular dados de finalização
        $dadosFinalizacao = [
            'viagem_id' => $viagemTeste['id'],
            'latitude_fim' => -10.92654,
            'longitude_fim' => -37.0731133,
            'km_rodados' => 15.7,
            'observacoes' => 'Viagem finalizada via teste - ' . date('Y-m-d H:i:s')
        ];
        
        echo "<p><strong>Dados de finalização:</strong></p>";
        echo "<pre>" . json_encode($dadosFinalizacao, JSON_PRETTY_PRINT) . "</pre>";
        
        // Fazer requisição para finalizar viagem
        $url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['REQUEST_URI']) . '/api-simples-v2.php?acao=finalizar-viagem';
        
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($dadosFinalizacao));
        curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        
        echo "<p><strong>Resposta da API:</strong> HTTP $httpCode</p>";
        echo "<pre>$response</pre>";
        
        $resultado = json_decode($response, true);
        
        if ($resultado && $resultado['sucesso']) {
            echo "<p style='color: green;'>✅ Viagem finalizada com sucesso!</p>";
            
            // Verificar se a solicitação foi atualizada
            $stmt = $pdo->prepare("
                SELECT s.*, v.data_fim as viagem_data_fim
                FROM solicitacoes_viagem s
                LEFT JOIN viagens v ON s.tecnico_id = v.tecnico_id 
                    AND s.cliente = v.cliente 
                    AND s.motivo = v.motivo
                WHERE s.id = ?
            ");
            $stmt->execute([$viagemTeste['solicitacao_id']]);
            $solicitacaoAtualizada = $stmt->fetch();
            
            if ($solicitacaoAtualizada) {
                echo "<h3>📋 Status da Solicitação Após Finalização:</h3>";
                echo "<table border='1' style='border-collapse: collapse;'>";
                echo "<tr><th>Campo</th><th>Valor</th></tr>";
                echo "<tr><td>ID</td><td>{$solicitacaoAtualizada['id']}</td></tr>";
                echo "<tr><td>Cliente</td><td>{$solicitacaoAtualizada['cliente']}</td></tr>";
                echo "<tr><td>Status</td><td style='color: " . ($solicitacaoAtualizada['status'] == 'concluída' ? 'green' : 'red') . ";'>{$solicitacaoAtualizada['status']}</td></tr>";
                echo "<tr><td>Viagem Finalizada</td><td>" . ($solicitacaoAtualizada['viagem_data_fim'] ? 'Sim' : 'Não') . "</td></tr>";
                echo "</table>";
                
                if ($solicitacaoAtualizada['status'] == 'concluída') {
                    echo "<p style='color: green;'>✅ Status da solicitação atualizado para 'concluída' com sucesso!</p>";
                } else {
                    echo "<p style='color: red;'>❌ Status da solicitação não foi atualizado</p>";
                }
            }
        } else {
            echo "<p style='color: red;'>❌ Erro ao finalizar viagem: " . ($resultado['mensagem'] ?? 'Erro desconhecido') . "</p>";
        }
    } else {
        echo "<p style='color: red;'>❌ Nenhuma viagem ativa para testar</p>";
    }
    
} catch (Exception $e) {
    echo "<p style='color: red;'>❌ Erro: " . $e->getMessage() . "</p>";
    echo "<pre>" . $e->getTraceAsString() . "</pre>";
}
?>

<style>
body { font-family: Arial, sans-serif; margin: 20px; }
table { margin: 10px 0; }
th, td { padding: 8px; text-align: left; }
th { background-color: #f2f2f2; }
</style> 
