<?php
/**
 * Script de teste para verificar se a API de solicitações está funcionando corretamente
 */

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

use ControleFrotas\Utils\Logger;

header('Content-Type: application/json');

echo "=== TESTE DE SOLICITAÇÃO DE VIAGEM ===\n\n";

try {
    // 1. Testar conexão com banco
    echo "1. Testando conexão com banco...\n";
    $pdo = \ControleFrotas\Config\Database::getConnection();
    echo "✅ Conexão OK\n\n";
    
    // 2. Verificar se tabela existe
    echo "2. Verificando tabela solicitacoes_viagem...\n";
    $stmt = $pdo->query("SHOW TABLES LIKE 'solicitacoes_viagem'");
    if ($stmt->rowCount() > 0) {
        echo "✅ Tabela existe\n\n";
    } else {
        echo "❌ Tabela não existe\n\n";
        exit;
    }
    
    // 3. Verificar estrutura da tabela
    echo "3. Estrutura da tabela:\n";
    $stmt = $pdo->query("DESCRIBE solicitacoes_viagem");
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo "   - {$row['Field']}: {$row['Type']}\n";
    }
    echo "\n";
    
    // 4. Verificar últimas solicitações
    echo "4. Últimas 5 solicitações:\n";
    $stmt = $pdo->query("SELECT id, tecnico_id, cliente, status, data_criacao FROM solicitacoes_viagem ORDER BY id DESC LIMIT 5");
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo "   - ID: {$row['id']}, Técnico: {$row['tecnico_id']}, Cliente: {$row['cliente']}, Status: {$row['status']}, Data: {$row['data_criacao']}\n";
    }
    echo "\n";
    
    // 5. Testar criação de solicitação
    echo "5. Testando criação de solicitação...\n";
    
    $dadosTeste = [
        'tecnico_id' => 4,
        'veiculo_id' => 6,
        'cliente' => 'TESTE DEBUG',
        'motivo' => 'Teste de debug',
        'km_inicial' => 100,
        'latitude_inicial' => -10.92654,
        'longitude_inicial' => -37.0731133,
        'endereco_inicial' => 'Avenida Teste, 123 - Aracaju/SE',
        'cliente_id' => 2,
        'observacoes' => 'Solicitação de teste para debug',
        'prioridade' => 'normal',
        'gestor_id' => 2
    ];
    
    $sql = "INSERT INTO solicitacoes_viagem (
        tecnico_id, veiculo_id, cliente, motivo, km_inicial,
        latitude_inicial, longitude_inicial, endereco_inicial, cliente_id,
        observacoes, prioridade, gestor_id, status, data_criacao
    ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'pendente', NOW())";
    
    $stmt = $pdo->prepare($sql);
    $stmt->execute([
        $dadosTeste['tecnico_id'],
        $dadosTeste['veiculo_id'],
        $dadosTeste['cliente'],
        $dadosTeste['motivo'],
        $dadosTeste['km_inicial'],
        $dadosTeste['latitude_inicial'],
        $dadosTeste['longitude_inicial'],
        $dadosTeste['endereco_inicial'],
        $dadosTeste['cliente_id'],
        $dadosTeste['observacoes'],
        $dadosTeste['prioridade'],
        $dadosTeste['gestor_id']
    ]);
    
    $solicitacaoId = $pdo->lastInsertId();
    echo "✅ Solicitação criada com ID: $solicitacaoId\n\n";
    
    // 6. Verificar se foi salva corretamente
    echo "6. Verificando solicitação criada:\n";
    $stmt = $pdo->prepare("SELECT * FROM solicitacoes_viagem WHERE id = ?");
    $stmt->execute([$solicitacaoId]);
    $solicitacao = $stmt->fetch(PDO::FETCH_ASSOC);
    
    if ($solicitacao) {
        echo "✅ Solicitação encontrada:\n";
        echo "   - ID: {$solicitacao['id']}\n";
        echo "   - Técnico: {$solicitacao['tecnico_id']}\n";
        echo "   - Cliente: {$solicitacao['cliente']}\n";
        echo "   - Status: {$solicitacao['status']}\n";
        echo "   - Data: {$solicitacao['data_criacao']}\n";
    } else {
        echo "❌ Solicitação não encontrada\n";
    }
    
    // 7. Simular resposta da API
    echo "\n7. Resposta que deveria ser enviada para o app:\n";
    $resposta = [
        'success' => true,
        'timestamp' => date('Y-m-d H:i:s'),
        'data' => [
            'solicitacao_id' => $solicitacaoId,
            'status' => 'pendente',
            'mensagem' => 'Solicitação enviada para aprovação do gestor'
        ]
    ];
    
    echo json_encode($resposta, JSON_PRETTY_PRINT) . "\n\n";
    
    // 8. Testar API real
    echo "8. Testando API real...\n";
    
    // Simular requisição POST
    $_SERVER['REQUEST_METHOD'] = 'POST';
    $_GET['acao'] = 'criar';
    
    // Simular dados JSON
    $inputJson = json_encode($dadosTeste);
    
    // Capturar output da API
    ob_start();
    
    // Incluir arquivo da API
    include __DIR__ . '/api/gestao/solicitacoes-viagem-simples.php';
    
    $output = ob_get_clean();
    echo "Resposta da API:\n$output\n";
    
    echo "\n=== TESTE CONCLUÍDO ===\n";
    
} catch (Exception $e) {
    echo "❌ ERRO: " . $e->getMessage() . "\n";
    echo "Stack trace:\n" . $e->getTraceAsString() . "\n";
}
?> 
