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

echo "<h2>🧪 TESTE COMPLETO: Nova Viagem (Pós-Correções)</h2>";

echo "<div style='background: #e0ffe0; padding: 15px; border-left: 5px solid #28a745; margin: 20px 0;'>";
echo "<h3>✅ Objetivo do Teste:</h3>";
echo "<p>Verificar se <strong>uma nova viagem</strong> funciona corretamente após todas as correções implementadas:</p>";
echo "<ul>";
echo "<li>KM GPS é salvo corretamente</li>";
echo "<li>Checklist usa tipo correto do veículo</li>";
echo "<li>Fotos são processadas e salvas</li>";
echo "<li>Não há erros ou problemas</li>";
echo "</ul>";
echo "</div>";

// Dados para teste de nova viagem
$dadosViagem = [
    'motorista_id' => 1,
    'tecnico_id' => 1, 
    'veiculo_id' => 6, // Cerato - após correção deve ser 'carro'
    'cliente' => 'TESTE COMPLETO - Cliente Simulado',
    'endereco_origem' => 'Rua dos Testes, 123 - Centro',
    'endereco_destino' => 'Avenida das Correções, 456 - Zona Sul',
    'motivo' => 'Teste pós-correções - Verificar funcionalidade completa',
    'latitude_inicial' => -11.01638130,
    'longitude_inicial' => -37.07611590,
    'km_inicial' => 1000
];

$dadosFinalizacao = [
    'latitude_fim' => -11.01645000,
    'longitude_fim' => -37.07620000,
    'kmGpsFinal' => 0.85, // Campo que o app envia
    'km_final' => 1001,
    'observacoes' => 'Viagem teste finalizada com sucesso'
];

$dadosChecklist = [
    'tipoVeiculo' => 'CARRO', // Será corrigido automaticamente pela API
    'observacoesGerais' => 'Checklist de teste pós-correções',
    'itens' => [
        [
            'itemId' => 'pneu_dianteiro_esquerdo',
            'status' => 'PROBLEMA',
            'observacoes' => 'Desgaste detectado - teste de foto'
        ],
        [
            'itemId' => 'farol_principal',
            'status' => 'OK',
            'observacoes' => 'Funcionamento normal'
        ],
        [
            'itemId' => 'espelho_retrovisor',
            'status' => 'OK',
            'observacoes' => 'Posicionamento correto'
        ]
    ],
    'fotos' => [
        [
            'itemId' => 'pneu_dianteiro_esquerdo',
            'descricao' => 'Desgaste irregular no pneu - teste pós-correções',
            'base64' => base64_encode('TESTE_COMPLETO_VIAGEM_IMAGEM_FAKE_DATA_12345'),
            'tipoMime' => 'image/jpeg'
        ]
    ]
];

echo "<h3>1. 📊 Dados do Teste:</h3>";

echo "<div style='background: #f8f9fa; padding: 15px; border: 1px solid #dee2e6; border-radius: 5px; margin: 10px 0;'>";
echo "<h4>🚗 Nova Viagem:</h4>";
echo "<ul>";
echo "<li><strong>Veículo:</strong> ID {$dadosViagem['veiculo_id']} (Cerato - deve usar tipo correto)</li>";
echo "<li><strong>Cliente:</strong> {$dadosViagem['cliente']}</li>";
echo "<li><strong>Origem:</strong> {$dadosViagem['endereco_origem']}</li>";
echo "<li><strong>Destino:</strong> {$dadosViagem['endereco_destino']}</li>";
echo "<li><strong>KM Inicial:</strong> {$dadosViagem['km_inicial']}</li>";
echo "</ul>";
echo "</div>";

echo "<div style='background: #f8f9fa; padding: 15px; border: 1px solid #dee2e6; border-radius: 5px; margin: 10px 0;'>";
echo "<h4>🏁 Finalização:</h4>";
echo "<ul>";
echo "<li><strong>KM GPS Final:</strong> {$dadosFinalizacao['kmGpsFinal']} (campo do app)</li>";
echo "<li><strong>KM Hodômetro:</strong> {$dadosFinalizacao['km_final']}</li>";
echo "<li><strong>Distância teórica:</strong> ~0.85 km</li>";
echo "</ul>";
echo "</div>";

echo "<div style='background: #f8f9fa; padding: 15px; border: 1px solid #dee2e6; border-radius: 5px; margin: 10px 0;'>";
echo "<h4>📋 Checklist:</h4>";
echo "<ul>";
echo "<li><strong>Total de itens:</strong> " . count($dadosChecklist['itens']) . "</li>";
echo "<li><strong>Total de fotos:</strong> " . count($dadosChecklist['fotos']) . "</li>";
echo "<li><strong>Tipo esperado:</strong> CARRO (API deve corrigir automaticamente)</li>";
echo "</ul>";
echo "</div>";

// Executar teste se solicitado
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['executar_teste_completo'])) {
    echo "<h3>2. 🚀 Executando Teste Completo:</h3>";
    
    try {
        require_once 'config/database.php';
        $pdo = new PDO($dsn, $username, $password, $options);
        
        // ETAPA 1: Criar nova viagem
        echo "<h4>📍 Etapa 1: Iniciando Nova Viagem</h4>";
        
        $sqlViagem = "INSERT INTO viagens (
            motorista_id, tecnico_id, veiculo_id, cliente, 
            endereco_origem, endereco_destino, motivo,
            latitude_inicial, longitude_inicial, km_inicial,
            data_inicio, observacoes
        ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(), ?)";
        
        $stmtViagem = $pdo->prepare($sqlViagem);
        $resultadoViagem = $stmtViagem->execute([
            $dadosViagem['motorista_id'],
            $dadosViagem['tecnico_id'],
            $dadosViagem['veiculo_id'],
            $dadosViagem['cliente'],
            $dadosViagem['endereco_origem'],
            $dadosViagem['endereco_destino'],
            $dadosViagem['motivo'],
            $dadosViagem['latitude_inicial'],
            $dadosViagem['longitude_inicial'],
            $dadosViagem['km_inicial'],
            'Teste automatizado - ' . date('Y-m-d H:i:s')
        ]);
        
        if ($resultadoViagem) {
            $viagemId = $pdo->lastInsertId();
            echo "<p style='color: green;'>✅ Viagem criada com ID: $viagemId</p>";
            
            // ETAPA 2: Finalizar viagem via API
            echo "<h4>🏁 Etapa 2: Finalizando Viagem via API</h4>";
            
            $dadosFinalizacao['viagem_id'] = $viagemId;
            $jsonFinalizacao = json_encode($dadosFinalizacao);
            
            $urlFinalizar = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['REQUEST_URI']) . '/api-simples-v2.php?acao=finalizar-viagem';
            
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $urlFinalizar);
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonFinalizacao);
            curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_TIMEOUT, 30);
            
            $responseFinalizar = curl_exec($ch);
            $httpCodeFinalizar = curl_getinfo($ch, CURLINFO_HTTP_CODE);
            curl_close($ch);
            
            echo "<p><strong>Resposta da API finalizar:</strong> HTTP $httpCodeFinalizar</p>";
            
            $dataFinalizar = json_decode($responseFinalizar, true);
            if ($dataFinalizar && $dataFinalizar['sucesso']) {
                echo "<p style='color: green;'>✅ Viagem finalizada com sucesso</p>";
                
                // Verificar se KM GPS foi salvo
                $stmtVerificar = $pdo->prepare("SELECT km_gps_final, data_fim FROM viagens WHERE id = ?");
                $stmtVerificar->execute([$viagemId]);
                $viagemFinalizada = $stmtVerificar->fetch(PDO::FETCH_ASSOC);
                
                if ($viagemFinalizada['km_gps_final'] > 0) {
                    echo "<p style='color: green;'>✅ KM GPS salvo: {$viagemFinalizada['km_gps_final']} km</p>";
                } else {
                    echo "<p style='color: red;'>❌ KM GPS não foi salvo corretamente</p>";
                }
                
            } else {
                echo "<p style='color: red;'>❌ Falha ao finalizar viagem: " . ($dataFinalizar['mensagem'] ?? 'Erro desconhecido') . "</p>";
            }
            
            // ETAPA 3: Enviar checklist via API
            echo "<h4>📋 Etapa 3: Enviando Checklist com Fotos</h4>";
            
            $dadosChecklist['viagemId'] = $viagemId;
            $dadosChecklist['veiculoId'] = $dadosViagem['veiculo_id'];
            $dadosChecklist['dataHora'] = date('Y-m-d H:i:s');
            
            $jsonChecklist = json_encode($dadosChecklist);
            
            $urlChecklist = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['REQUEST_URI']) . '/api/relatorios/api-checklist-v3.php?acao=checklist_veiculo';
            
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $urlChecklist);
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonChecklist);
            curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_TIMEOUT, 30);
            
            $responseChecklist = curl_exec($ch);
            $httpCodeChecklist = curl_getinfo($ch, CURLINFO_HTTP_CODE);
            curl_close($ch);
            
            echo "<p><strong>Resposta da API checklist:</strong> HTTP $httpCodeChecklist</p>";
            
            $dataChecklist = json_decode($responseChecklist, true);
            if ($dataChecklist && $dataChecklist['success']) {
                $checklistId = $dataChecklist['data']['id'];
                $fotosProcessadas = $dataChecklist['data']['fotosProcessadas'];
                
                echo "<p style='color: green;'>✅ Checklist criado com ID: $checklistId</p>";
                echo "<p style='color: green;'>✅ Fotos processadas: $fotosProcessadas</p>";
                
                // Verificar tipo do veículo no checklist
                $stmtChecklistVerif = $pdo->prepare("SELECT tipo_veiculo FROM checklist_veiculos WHERE id = ?");
                $stmtChecklistVerif->execute([$checklistId]);
                $checklistData = $stmtChecklistVerif->fetch(PDO::FETCH_ASSOC);
                
                if ($checklistData['tipo_veiculo'] === 'CARRO') {
                    echo "<p style='color: green;'>✅ Tipo de veículo corrigido automaticamente: CARRO</p>";
                } else {
                    echo "<p style='color: orange;'>⚠️ Tipo de veículo: {$checklistData['tipo_veiculo']}</p>";
                }
                
            } else {
                echo "<p style='color: red;'>❌ Falha ao criar checklist: " . ($dataChecklist['message'] ?? 'Erro desconhecido') . "</p>";
            }
            
            // ETAPA 4: Verificação final completa
            echo "<h4>🎯 Etapa 4: Verificação Final</h4>";
            
            echo "<div style='background: #f8f9fa; padding: 15px; border: 1px solid #dee2e6; border-radius: 5px; margin: 10px 0;'>";
            echo "<h5>🚗 Status da Viagem:</h5>";
            
            $stmtFinal = $pdo->prepare("
                SELECT v.*, ve.modelo, ve.tipo as tipo_veiculo_real
                FROM viagens v 
                LEFT JOIN veiculos ve ON v.veiculo_id = ve.id 
                WHERE v.id = ?
            ");
            $stmtFinal->execute([$viagemId]);
            $viagemFinal = $stmtFinal->fetch(PDO::FETCH_ASSOC);
            
            echo "<ul>";
            echo "<li><strong>ID:</strong> {$viagemFinal['id']}</li>";
            echo "<li><strong>Cliente:</strong> {$viagemFinal['cliente']}</li>";
            echo "<li><strong>Veículo:</strong> {$viagemFinal['modelo']} (Tipo: {$viagemFinal['tipo_veiculo_real']})</li>";
            echo "<li><strong>Status:</strong> " . ($viagemFinal['data_fim'] ? 'FINALIZADA' : 'EM ANDAMENTO') . "</li>";
            echo "<li><strong>KM GPS:</strong> " . ($viagemFinal['km_gps_final'] ?: 'NULL') . "</li>";
            echo "</ul>";
            echo "</div>";
            
            if (isset($checklistId)) {
                echo "<div style='background: #f8f9fa; padding: 15px; border: 1px solid #dee2e6; border-radius: 5px; margin: 10px 0;'>";
                echo "<h5>📋 Status do Checklist:</h5>";
                
                $stmtChecklistFinal = $pdo->prepare("
                    SELECT c.*, COUNT(f.id) as total_fotos
                    FROM checklist_veiculos c
                    LEFT JOIN checklist_fotos f ON c.id = f.checklist_id
                    WHERE c.id = ?
                    GROUP BY c.id
                ");
                $stmtChecklistFinal->execute([$checklistId]);
                $checklistFinal = $stmtChecklistFinal->fetch(PDO::FETCH_ASSOC);
                
                echo "<ul>";
                echo "<li><strong>ID:</strong> {$checklistFinal['id']}</li>";
                echo "<li><strong>Tipo:</strong> {$checklistFinal['tipo_veiculo']}</li>";
                echo "<li><strong>Fotos:</strong> {$checklistFinal['total_fotos']}</li>";
                echo "<li><strong>Data:</strong> {$checklistFinal['data_hora']}</li>";
                echo "</ul>";
                echo "</div>";
            }
            
            // Resultado final
            echo "<div style='background: #e0ffe0; padding: 15px; border-left: 5px solid #28a745; margin: 20px 0;'>";
            echo "<h4>🎉 RESULTADO DO TESTE:</h4>";
            
            $sucessos = 0;
            $problemas = [];
            
            if ($viagemFinal['data_fim']) {
                $sucessos++;
                echo "<p>✅ Viagem finalizada corretamente</p>";
            } else {
                $problemas[] = "Viagem não foi finalizada";
            }
            
            if ($viagemFinal['km_gps_final'] > 0) {
                $sucessos++;
                echo "<p>✅ KM GPS salvo: {$viagemFinal['km_gps_final']} km</p>";
            } else {
                $problemas[] = "KM GPS não foi salvo";
            }
            
            if ($viagemFinal['tipo_veiculo_real'] === 'carro') {
                $sucessos++;
                echo "<p>✅ Tipo de veículo correto: carro</p>";
            } else {
                $problemas[] = "Tipo de veículo incorreto: {$viagemFinal['tipo_veiculo_real']}";
            }
            
            if (isset($checklistFinal) && $checklistFinal['tipo_veiculo'] === 'CARRO') {
                $sucessos++;
                echo "<p>✅ Checklist com tipo correto: CARRO</p>";
            } else {
                $problemas[] = "Checklist com tipo incorreto";
            }
            
            if (isset($checklistFinal) && $checklistFinal['total_fotos'] > 0) {
                $sucessos++;
                echo "<p>✅ Fotos processadas: {$checklistFinal['total_fotos']}</p>";
            } else {
                $problemas[] = "Fotos não foram processadas";
            }
            
            echo "<h5>📊 Resumo:</h5>";
            echo "<p><strong>Sucessos:</strong> $sucessos/5</p>";
            if (count($problemas) > 0) {
                echo "<p><strong>Problemas restantes:</strong></p>";
                echo "<ul>";
                foreach ($problemas as $problema) {
                    echo "<li style='color: red;'>❌ $problema</li>";
                }
                echo "</ul>";
            } else {
                echo "<p style='color: green; font-weight: bold;'>🎉 TODOS OS PROBLEMAS FORAM CORRIGIDOS!</p>";
            }
            echo "</div>";
            
        } else {
            echo "<p style='color: red;'>❌ Falha ao criar viagem inicial</p>";
        }
        
    } catch (Exception $e) {
        echo "<div style='background: #ffe0e0; padding: 15px; border-left: 5px solid #dc3545;'>";
        echo "<h4>❌ Erro durante o teste:</h4>";
        echo "<p>{$e->getMessage()}</p>";
        echo "</div>";
    }
}

// Formulário para executar teste
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    echo "<h3>2. 🚀 Executar Teste Completo:</h3>";
    echo "<form method='post' style='background: #f8f9fa; padding: 20px; border: 1px solid #ddd; border-radius: 5px;'>";
    echo "<div style='background: #fff3cd; padding: 15px; border-left: 5px solid #ffc107; margin: 10px 0;'>";
    echo "<h4>⚠️ ATENÇÃO:</h4>";
    echo "<p>Este teste irá:</p>";
    echo "<ul>";
    echo "<li>Criar uma nova viagem real no banco de dados</li>";
    echo "<li>Finalizar a viagem usando a API corrigida</li>";
    echo "<li>Criar um checklist com fotos</li>";
    echo "<li>Verificar se todas as correções estão funcionando</li>";
    echo "</ul>";
    echo "<p><strong>Os dados serão inseridos no banco real!</strong></p>";
    echo "</div>";
    echo "<button type='submit' name='executar_teste_completo' style='background: #28a745; color: white; padding: 15px 30px; border: none; border-radius: 5px; cursor: pointer; font-size: 16px;'>🧪 Executar Teste Completo</button>";
    echo "</form>";
}

echo "<h3>3. 🎯 Objetivo das Correções:</h3>";
echo "<div style='background: #e0f7ff; padding: 15px; border-left: 5px solid #17a2b8; margin: 20px 0;'>";
echo "<p>Este teste verifica se <strong>futuras viagens</strong> funcionarão corretamente, evitando os problemas que ocorreram na viagem 151:</p>";
echo "<ul>";
echo "<li>✅ API aceita campo <code>kmGpsFinal</code> do app Android</li>";
echo "<li>✅ Tipos de veículos estão corretos na tabela</li>";
echo "<li>✅ Checklist detecta automaticamente o tipo correto</li>";
echo "<li>✅ Sistema de fotos com logs detalhados para debug</li>";
echo "<li>✅ Infraestrutura completa de monitoramento</li>";
echo "</ul>";
echo "</div>";
?> 
