<?php
/**
 * Teste de Conexão e Verificação do Banco de Dados
 */

// Headers
header('Content-Type: application/json; charset=utf-8');

// Carregar configurações do .env
function loadEnv() {
    $config = [];
    
    // Detectar ambiente (produção ou desenvolvimento)
    $isProduction = !in_array($_SERVER['HTTP_HOST'] ?? '', ['localhost', '127.0.0.1', '10.0.2.2']);
    $envFile = $isProduction ? 'env.production' : 'env.development';
    
    // Tentar carregar arquivo de configuração
    if (file_exists($envFile)) {
        $lines = file($envFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
        foreach ($lines as $line) {
            if (strpos($line, '=') !== false && strpos($line, '#') !== 0) {
                list($key, $value) = explode('=', $line, 2);
                $config[trim($key)] = trim($value);
            }
        }
    }
    
    return $config;
}

try {
    $config = loadEnv();
    $host = $config['DB_HOST'] ?? 'localhost';
    $dbname = $config['DB_NAME'] ?? 'controle_frotas';
    $username = $config['DB_USER'] ?? 'root';
    $password = $config['DB_PASS'] ?? '';
    
    // Informações básicas
    $info = [
        'status' => 'OK',
        'ambiente' => !in_array($_SERVER['HTTP_HOST'] ?? '', ['localhost', '127.0.0.1', '10.0.2.2']) ? 'PRODUÇÃO' : 'DESENVOLVIMENTO',
        'config_carregada' => [
            'host' => $host,
            'database' => $dbname,
            'username' => $username,
            'password_definida' => !empty($password) ? 'SIM' : 'NÃO'
        ]
    ];
    
    // Testar conexão
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $username, $password, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    ]);
    
    $info['conexao'] = 'SUCESSO';
    
    // Verificar versão do MySQL
    $stmt = $pdo->query("SELECT VERSION() as version");
    $info['mysql_version'] = $stmt->fetch()['version'];
    
    // Verificar se as tabelas existem
    $tabelas_necessarias = ['usuarios', 'motoristas', 'veiculos', 'viagens'];
    $tabelas_existentes = [];
    
    foreach ($tabelas_necessarias as $tabela) {
        try {
            $stmt = $pdo->query("SHOW TABLES LIKE '$tabela'");
            if ($stmt->rowCount() > 0) {
                $tabelas_existentes[$tabela] = 'EXISTE';
                
                // Contar registros
                $stmt = $pdo->query("SELECT COUNT(*) as total FROM $tabela");
                $total = $stmt->fetch()['total'];
                $tabelas_existentes[$tabela] .= " ($total registros)";
            } else {
                $tabelas_existentes[$tabela] = 'NÃO EXISTE';
            }
        } catch (Exception $e) {
            $tabelas_existentes[$tabela] = 'ERRO: ' . $e->getMessage();
        }
    }
    
    $info['tabelas'] = $tabelas_existentes;
    
    // Verificar se há dados de teste
    try {
        $stmt = $pdo->query("SELECT COUNT(*) as total FROM viagens");
        $info['viagens_cadastradas'] = $stmt->fetch()['total'];
    } catch (Exception $e) {
        $info['viagens_cadastradas'] = 'ERRO: ' . $e->getMessage();
    }
    
    // Testar inserção simples (se as tabelas existirem)
    if (isset($tabelas_existentes['viagens']) && strpos($tabelas_existentes['viagens'], 'EXISTE') !== false) {
        $info['teste_api'] = 'Tabelas prontas para receber dados do app';
    } else {
        $info['teste_api'] = 'ATENÇÃO: Tabelas precisam ser criadas';
    }
    
    echo json_encode($info, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
    
} catch (Exception $e) {
    http_response_code(500);
    echo json_encode([
        'status' => 'ERRO',
        'mensagem' => $e->getMessage(),
        'config_usada' => [
            'host' => $host ?? 'não definido',
            'database' => $dbname ?? 'não definido',
            'username' => $username ?? 'não definido'
        ]
    ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
}
?> 
