<?php 
include ('includes/header.php');

// Conexão com o banco de dados
$db = new SQLite3('./api/.db.db');
$db->busyTimeout(30000);

// Nome da tabela de DNS
$table_name = "dns";

// Consulta para listar as DNS
$dns_list = [];
$res = $db->query("SELECT id, url FROM $table_name ORDER BY url");
while ($row = $res->fetchArray(SQLITE3_ASSOC)) {
    $dns_list[] = $row;
}

// VERIFICAR SE HOUVE AÇÃO
$action = isset($_GET['action']) ? $_GET['action'] : (isset($_POST['action']) ? $_POST['action'] : '');

// AÇÃO 1: DIAGNÓSTICO
if ($action === 'diagnostic' && isset($_POST['dns_diag'])) {
    $dns_diag = trim($_POST['dns_diag']);
    $domain = str_replace(['http://', 'https://', 'www.'], '', $dns_diag);
    
    echo '<div class="container mt-4">';
    echo '<h3 class="text-danger"><i class="icon icon-search"></i> DIAGNÓSTICO DETALHADO</h3>';
    echo '<p>Analisando: <code>' . htmlspecialchars($dns_diag) . '</code></p>';
    echo '<hr>';
    
    // Buscar todas as variações
    echo '<h5>1. Buscando todas as variações no banco:</h5>';
    
    $variations = [
        $dns_diag,
        rtrim($dns_diag, '/'),
        rtrim($dns_diag, '/') . '/',
        str_replace('http://', 'https://', $dns_diag),
        str_replace('http://', '', $dns_diag),
        'www.' . str_replace('http://', '', $dns_diag),
        'http://www.' . str_replace('http://', '', $dns_diag),
    ];
    
    $found = [];
    foreach ($variations as $var) {
        $escaped = $db->escapeString($var);
        $count_ibo = $db->querySingle("SELECT COUNT(*) FROM ibo WHERE url = '$escaped'");
        $count_ibocode = $db->querySingle("SELECT COUNT(*) FROM ibocode WHERE url = '$escaped'");
        
        if ($count_ibo > 0 || $count_ibocode > 0) {
            $found[] = [
                'url' => $var,
                'ibo' => $count_ibo,
                'ibocode' => $count_ibocode
            ];
        }
    }
    
    if (count($found) > 0) {
        echo '<table class="table table-bordered table-sm">';
        echo '<thead><tr><th>Variação encontrada</th><th>ibo</th><th>ibocode</th></tr></thead>';
        foreach ($found as $item) {
            echo '<tr>';
            echo '<td><code>' . htmlspecialchars($item['url']) . '</code></td>';
            echo '<td>' . $item['ibo'] . '</td>';
            echo '<td>' . $item['ibocode'] . '</td>';
            echo '</tr>';
        }
        echo '</table>';
    } else {
        echo '<div class="alert alert-warning">Nenhuma variação exata encontrada.</div>';
    }
    
    // Buscar por LIKE
    echo '<h5>2. Busca por LIKE "%' . htmlspecialchars($domain) . '%":</h5>';
    
    $like_query = "SELECT DISTINCT url, 
                  (SELECT COUNT(*) FROM ibo WHERE url = t.url) as ibo,
                  (SELECT COUNT(*) FROM ibocode WHERE url = t.url) as ibocode
                  FROM (
                      SELECT url FROM ibo WHERE url LIKE '%$domain%'
                      UNION
                      SELECT url FROM ibocode WHERE url LIKE '%$domain%'
                  ) t
                  ORDER BY url";
    
    $like_result = $db->query($like_query);
    $like_found = [];
    
    echo '<div class="card">';
    echo '<div class="card-body" style="max-height: 300px; overflow-y: auto;">';
    while ($row = $like_result->fetchArray(SQLITE3_ASSOC)) {
        $like_found[] = $row;
        echo '<div class="mb-1">';
        echo '<code>' . htmlspecialchars($row['url']) . '</code> ';
        echo '<span class="badge badge-info">ibo: ' . $row['ibo'] . '</span> ';
        echo '<span class="badge badge-secondary">ibocode: ' . $row['ibocode'] . '</span>';
        echo '</div>';
    }
    echo '</div>';
    echo '</div>';
    
    // Exemplos de registros
    echo '<h5>3. Exemplos de registros (últimos 5):</h5>';
    $examples = $db->query("SELECT id, url, mac_address FROM ibo WHERE url LIKE '%$domain%' ORDER BY id DESC LIMIT 5");
    
    echo '<table class="table table-sm">';
    echo '<thead><tr><th>ID</th><th>URL</th><th>MAC</th></tr></thead>';
    while ($row = $examples->fetchArray(SQLITE3_ASSOC)) {
        echo '<tr>';
        echo '<td>' . $row['id'] . '</td>';
        echo '<td><code style="color:red">' . htmlspecialchars($row['url']) . '</code></td>';
        echo '<td>' . htmlspecialchars($row['mac_address']) . '</td>';
        echo '</tr>';
    }
    echo '</table>';
    
    echo '<hr>';
    echo '<a href="migrar_dns.php" class="btn btn-primary">Voltar</a>';
    
    // Form para migrar baseado no diagnóstico
    if (count($like_found) > 0) {
        echo '<hr>';
        echo '<h5>4. Migrar todas as encontradas:</h5>';
        echo '<form method="post" onsubmit="return confirm(\'ATENÇÃO! Isso afetará TODOS os registros. Tem certeza?\')">';
        echo '<input type="hidden" name="action" value="migrate_all">';
        echo '<input type="hidden" name="domain" value="' . htmlspecialchars($domain) . '">';
        echo '<div class="form-group">';
        echo '<label>Nova URL:</label>';
        echo '<input type="text" name="new_url" class="form-control" value="http://kyup.top" required>';
        echo '</div>';
        echo '<button type="submit" class="btn btn-danger">';
        echo '<i class="icon icon-bomb"></i> MIGRAR TODAS AS ' . count($like_found) . ' VARIAÇÕES';
        echo '</button>';
        echo '</form>';
    }
    
    echo '</div>';
}

// AÇÃO 2: MIGRAÇÃO FORÇA BRUTA
elseif ($action === 'migrate_all' && isset($_POST['domain']) && isset($_POST['new_url'])) {
    $domain = trim($_POST['domain']);
    $new_url = trim($_POST['new_url']);
    
    echo '<div class="container mt-4">';
    echo '<h3 class="text-danger"><i class="icon icon-bomb"></i> MIGRAÇÃO FORÇA BRUTA</h3>';
    echo '<p>Domínio: <code>' . htmlspecialchars($domain) . '</code></p>';
    echo '<p>Nova URL: <code>' . htmlspecialchars($new_url) . '</code></p>';
    echo '<hr>';
    
    // Contar antes
    $before_ibo = $db->querySingle("SELECT COUNT(*) FROM ibo WHERE url LIKE '%$domain%'");
    $before_ibocode = $db->querySingle("SELECT COUNT(*) FROM ibocode WHERE url LIKE '%$domain%'");
    
    echo '<p>Registros encontrados:</p>';
    echo '<ul>';
    echo '<li>Tabela ibo: ' . $before_ibo . ' registros</li>';
    echo '<li>Tabela ibocode: ' . $before_ibocode . ' registros</li>';
    echo '</ul>';
    
    if ($before_ibo > 0 || $before_ibocode > 0) {
        // Iniciar transação
        $db->exec('BEGIN TRANSACTION');
        
        try {
            // Atualizar ibo
            $result_ibo = $db->exec("UPDATE ibo SET url = '" . $db->escapeString($new_url) . "' WHERE url LIKE '%$domain%'");
            $updated_ibo = $db->changes();
            
            // Atualizar ibocode
            $result_ibocode = $db->exec("UPDATE ibocode SET url = '" . $db->escapeString($new_url) . "' WHERE url LIKE '%$domain%'");
            $updated_ibocode = $db->changes();
            
            $db->exec('COMMIT');
            
            echo '<div class="alert alert-success">';
            echo '<h4><i class="icon icon-check"></i> MIGRAÇÃO CONCLUÍDA!</h4>';
            echo '<strong>Resultados:</strong><br>';
            echo '• Tabela ibo: ' . $updated_ibo . ' registros atualizados<br>';
            echo '• Tabela ibocode: ' . $updated_ibocode . ' registros atualizados<br>';
            echo '</div>';
            
            // Verificar depois
            $after_ibo = $db->querySingle("SELECT COUNT(*) FROM ibo WHERE url LIKE '%$domain%'");
            $after_ibocode = $db->querySingle("SELECT COUNT(*) FROM ibocode WHERE url LIKE '%$domain%'");
            
            if ($after_ibo > 0 || $after_ibocode > 0) {
                echo '<div class="alert alert-danger">';
                echo '<strong>ATENÇÃO!</strong> Ainda existem registros:<br>';
                echo '• ibo: ' . $after_ibo . '<br>';
                echo '• ibocode: ' . $after_ibocode . '<br>';
                echo '</div>';
            } else {
                echo '<div class="alert alert-info">';
                echo '<strong>SUCESSO TOTAL!</strong> Todos os registros foram migrados.';
                echo '</div>';
            }
            
        } catch (Exception $e) {
            $db->exec('ROLLBACK');
            echo '<div class="alert alert-danger">';
            echo '<strong>ERRO:</strong> ' . $e->getMessage();
            echo '</div>';
        }
    } else {
        echo '<div class="alert alert-warning">Nenhum registro encontrado com este domínio.</div>';
    }
    
    echo '<hr>';
    echo '<a href="migrar_dns.php" class="btn btn-primary">Voltar ao migrador</a>';
    echo '</div>';
}

// AÇÃO 3: MIGRAÇÃO SIMPLES (original)
elseif (isset($_POST['submit_simple'])) {
    $dns_to_replace = trim($db->escapeString($_POST['dns_to_replace']));
    $new_value = trim($db->escapeString($_POST['new_value']));
    
    echo '<div class="container mt-4">';
    echo '<h3><i class="icon icon-refresh"></i> MIGRAÇÃO SIMPLES</h3>';
    echo '<p>Substituindo: <code>' . htmlspecialchars($dns_to_replace) . '</code></p>';
    echo '<p>Por: <code>' . htmlspecialchars($new_value) . '</code></p>';
    echo '<hr>';
    
    if (empty($dns_to_replace) || empty($new_value)) {
        echo '<div class="alert alert-danger">Ambos os campos são obrigatórios.</div>';
    } else {
        // Contar antes
        $before_ibo = $db->querySingle("SELECT COUNT(*) FROM ibo WHERE url = '$dns_to_replace'");
        $before_ibocode = $db->querySingle("SELECT COUNT(*) FROM ibocode WHERE url = '$dns_to_replace'");
        
        echo '<p>Registros encontrados (exatos):</p>';
        echo '<ul>';
        echo '<li>Tabela ibo: ' . $before_ibo . ' registros</li>';
        echo '<li>Tabela ibocode: ' . $before_ibocode . ' registros</li>';
        echo '</ul>';
        
        if ($before_ibo > 0 || $before_ibocode > 0) {
            $db->exec('BEGIN TRANSACTION');
            
            try {
                $result_ibo = $db->exec("UPDATE ibo SET url = '$new_value' WHERE url = '$dns_to_replace'");
                $updated_ibo = $db->changes();
                
                $result_ibocode = $db->exec("UPDATE ibocode SET url = '$new_value' WHERE url = '$dns_to_replace'");
                $updated_ibocode = $db->changes();
                
                $db->exec('COMMIT');
                
                echo '<div class="alert alert-success">';
                echo '<strong>Migração concluída!</strong><br>';
                echo '• ibo: ' . $updated_ibo . ' registros atualizados<br>';
                echo '• ibocode: ' . $updated_ibocode . ' registros atualizados<br>';
                echo '</div>';
                
            } catch (Exception $e) {
                $db->exec('ROLLBACK');
                echo '<div class="alert alert-danger">Erro: ' . $e->getMessage() . '</div>';
            }
        } else {
            echo '<div class="alert alert-warning">Nenhum registro encontrado com esta URL exata.</div>';
            
            // Sugerir diagnóstico
            echo '<div class="mt-3">';
            echo '<form method="post">';
            echo '<input type="hidden" name="action" value="diagnostic">';
            echo '<input type="hidden" name="dns_diag" value="' . htmlspecialchars($dns_to_replace) . '">';
            echo '<button type="submit" class="btn btn-info">';
            echo '<i class="icon icon-search"></i> Fazer diagnóstico desta URL';
            echo '</button>';
            echo '</form>';
            echo '</div>';
        }
    }
    
    echo '<hr>';
    echo '<a href="migrar_dns.php" class="btn btn-primary">Voltar</a>';
    echo '</div>';
}

// AÇÃO 4: MIGRAÇÃO PARCIAL (substituir parte da URL)
elseif ($action === 'migrate_partial' && isset($_POST['partial_old']) && isset($_POST['partial_new'])) {
    $partial_old = trim($_POST['partial_old']);
    $partial_new = trim($_POST['partial_new']);
    
    echo '<div class="container mt-4">';
    echo '<h3><i class="icon icon-puzzle-piece"></i> MIGRAÇÃO PARCIAL</h3>';
    echo '<p>Substituindo parte: <code>' . htmlspecialchars($partial_old) . '</code></p>';
    echo '<p>Por: <code>' . htmlspecialchars($partial_new) . '</code></p>';
    echo '<hr>';
    
    // Buscar URLs que contêm a parte antiga
    $urls_ibo = $db->query("SELECT DISTINCT url FROM ibo WHERE url LIKE '%" . $db->escapeString($partial_old) . "%'");
    $urls_ibocode = $db->query("SELECT DISTINCT url FROM ibocode WHERE url LIKE '%" . $db->escapeString($partial_old) . "%'");
    
    $total_updated = 0;
    
    echo '<div class="card">';
    echo '<div class="card-body">';
    echo '<h5>Processando...</h5>';
    
    $db->exec('BEGIN TRANSACTION');
    
    try {
        // Processar ibo
        while ($row = $urls_ibo->fetchArray(SQLITE3_ASSOC)) {
            $old_url = $row['url'];
            $new_url = str_replace($partial_old, $partial_new, $old_url);
            
            if ($old_url !== $new_url) {
                $db->exec("UPDATE ibo SET url = '" . $db->escapeString($new_url) . "' WHERE url = '" . $db->escapeString($old_url) . "'");
                $total_updated += $db->changes();
                echo '<div class="mb-1">';
                echo '<code>' . htmlspecialchars($old_url) . '</code> → ';
                echo '<code>' . htmlspecialchars($new_url) . '</code>';
                echo '</div>';
            }
        }
        
        // Processar ibocode
        while ($row = $urls_ibocode->fetchArray(SQLITE3_ASSOC)) {
            $old_url = $row['url'];
            $new_url = str_replace($partial_old, $partial_new, $old_url);
            
            if ($old_url !== $new_url) {
                $db->exec("UPDATE ibocode SET url = '" . $db->escapeString($new_url) . "' WHERE url = '" . $db->escapeString($old_url) . "'");
                $total_updated += $db->changes();
            }
        }
        
        $db->exec('COMMIT');
        
        echo '<hr>';
        echo '<div class="alert alert-success">';
        echo '<strong>Concluído!</strong> Total de registros atualizados: ' . $total_updated;
        echo '</div>';
        
    } catch (Exception $e) {
        $db->exec('ROLLBACK');
        echo '<div class="alert alert-danger">Erro: ' . $e->getMessage() . '</div>';
    }
    
    echo '</div>';
    echo '</div>';
    
    echo '<hr>';
    echo '<a href="migrar_dns.php" class="btn btn-primary">Voltar</a>';
    echo '</div>';
}

// SE NÃO HOUVE AÇÃO, MOSTRAR O FORMULÁRIO PRINCIPAL
if (empty($action) || in_array($action, ['diagnostic', 'migrate_all', 'migrate_partial']) && !isset($_POST[$action])) {
?>

<div class="col-md-10 mx-auto ctmain-table">
    <div class="card-body">
        <div class="card ctcard">
            <div class="card-header card-header-danger">
                <center>
                    <h3><i class="icon icon-bullhorn"></i> MIGRADOR UNIVERSAL DE DNS</h3>
                    <p class="mb-0">Resolve qualquer problema de migração</p>
                </center>
            </div>
            
            <div class="card-body">
                
                <!-- ABA 1: MIGRAÇÃO SIMPLES -->
                <div class="mb-4">
                    <h4><i class="icon icon-refresh"></i> Migração Simples</h4>
                    <p>Para substituir uma URL exata por outra:</p>
                    
                    <form method="post">
                        <input type="hidden" name="submit_simple" value="1">
                        
                        <div class="row">
                            <div class="col-md-6">
                                <div class="form-group">
                                    <label>URL a ser substituída:</label>
                                    <div class="input-group">
                                        <select class="form-control" id="dns_select" onchange="document.getElementById('dns_to_replace').value = this.value">
                                            <option value="">Selecione uma DNS...</option>
                                            <?php foreach ($dns_list as $dns): ?>
                                            <option value="<?php echo htmlspecialchars($dns['url']); ?>">
                                                <?php echo htmlspecialchars($dns['url']); ?>
                                            </option>
                                            <?php endforeach; ?>
                                        </select>
                                        <div class="input-group-append">
                                            <span class="input-group-text">OU</span>
                                        </div>
                                    </div>
                                    <input type="text" 
                                           class="form-control mt-2" 
                                           id="dns_to_replace" 
                                           name="dns_to_replace" 
                                           placeholder="Digite a URL exata"
                                           required>
                                </div>
                            </div>
                            
                            <div class="col-md-6">
                                <div class="form-group">
                                    <label>Nova URL:</label>
                                    <div class="input-group">
                                        <select class="form-control" id="new_select" onchange="document.getElementById('new_value').value = this.value">
                                            <option value="">Selecione uma nova DNS...</option>
                                            <?php foreach ($dns_list as $dns): ?>
                                            <option value="<?php echo htmlspecialchars($dns['url']); ?>">
                                                <?php echo htmlspecialchars($dns['url']); ?>
                                            </option>
                                            <?php endforeach; ?>
                                        </select>
                                        <div class="input-group-append">
                                            <span class="input-group-text">OU</span>
                                        </div>
                                    </div>
                                    <input type="text" 
                                           class="form-control mt-2" 
                                           id="new_value" 
                                           name="new_value" 
                                           placeholder="Digite a nova URL"
                                           required>
                                </div>
                            </div>
                        </div>
                        
                        <div class="text-center mt-3">
                            <button type="submit" class="btn btn-primary">
                                <i class="icon icon-check"></i> Executar Migração Simples
                            </button>
                        </div>
                    </form>
                </div>
                
                <hr>
                
                <!-- ABA 2: DIAGNÓSTICO -->
                <div class="mb-4">
                    <h4><i class="icon icon-search"></i> Diagnóstico</h4>
                    <p>Para investigar por que uma URL não está sendo migrada:</p>
                    
                    <form method="post">
                        <input type="hidden" name="action" value="diagnostic">
                        
                        <div class="form-group">
                            <label>URL para diagnosticar:</label>
                            <input type="text" 
                                   name="dns_diag" 
                                   class="form-control" 
                                   placeholder="Ex: http://teambr.top"
                                   value="http://teambr.top"
                                   required>
                            <small class="form-text text-muted">
                                Serão buscadas todas as variações desta URL no banco.
                            </small>
                        </div>
                        
                        <div class="text-center">
                            <button type="submit" class="btn btn-info">
                                <i class="icon icon-search"></i> Executar Diagnóstico
                            </button>
                        </div>
                    </form>
                </div>
                
                <hr>
                
                <!-- ABA 3: FORÇA BRUTA -->
                <div class="mb-4">
                    <h4 class="text-danger"><i class="icon icon-bomb"></i> Força Bruta</h4>
                    <p class="text-danger"><strong>ATENÇÃO:</strong> Substitui TODAS as URLs que contêm um determinado domínio.</p>
                    
                    <form method="post" onsubmit="return confirm('ATENÇÃO! Esta operação é irreversível. Continuar?')">
                        <input type="hidden" name="action" value="migrate_all">
                        
                        <div class="row">
                            <div class="col-md-6">
                                <div class="form-group">
                                    <label>Domínio a ser substituído:</label>
                                    <input type="text" 
                                           name="domain" 
                                           class="form-control" 
                                           placeholder="Ex: teambr.top (sem http://)"
                                           value="teambr.top"
                                           required>
                                    <small class="form-text text-muted">
                                        Apenas o domínio, sem http:// ou https://
                                    </small>
                                </div>
                            </div>
                            
                            <div class="col-md-6">
                                <div class="form-group">
                                    <label>Nova URL completa:</label>
                                    <input type="text" 
                                           name="new_url" 
                                           class="form-control" 
                                           placeholder="Ex: http://kyup.top"
                                           value="http://kyup.top"
                                           required>
                                </div>
                            </div>
                        </div>
                        
                        <div class="text-center">
                            <button type="submit" class="btn btn-danger btn-lg">
                                <i class="icon icon-bomb"></i> EXECUTAR FORÇA BRUTA
                            </button>
                        </div>
                    </form>
                </div>
                
                <hr>
                
                <!-- ABA 4: MIGRAÇÃO PARCIAL -->
                <div class="mb-4">
                    <h4><i class="icon icon-puzzle-piece"></i> Migração Parcial</h4>
                    <p>Para substituir apenas parte das URLs (ex: mudar domínio mantendo protocolo):</p>
                    
                    <form method="post">
                        <input type="hidden" name="action" value="migrate_partial">
                        
                        <div class="row">
                            <div class="col-md-6">
                                <div class="form-group">
                                    <label>Parte a ser substituída:</label>
                                    <input type="text" 
                                           name="partial_old" 
                                           class="form-control" 
                                           placeholder="Ex: teambr.top"
                                           value="teambr.top"
                                           required>
                                </div>
                            </div>
                            
                            <div class="col-md-6">
                                <div class="form-group">
                                    <label>Nova parte:</label>
                                    <input type="text" 
                                           name="partial_new" 
                                           class="form-control" 
                                           placeholder="Ex: kyup.top"
                                           value="kyup.top"
                                           required>
                                </div>
                            </div>
                        </div>
                        
                        <div class="text-center">
                            <button type="submit" class="btn btn-warning">
                                <i class="icon icon-puzzle-piece"></i> Executar Migração Parcial
                            </button>
                        </div>
                    </form>
                </div>
                
                <!-- ESTATÍSTICAS -->
                <div class="mt-4 p-3 bg-light rounded">
                    <h5><i class="icon icon-chart-bar"></i> Estatísticas do Banco</h5>
                    <?php
                    $total_ibo = $db->querySingle("SELECT COUNT(*) FROM ibo");
                    $total_ibocode = $db->querySingle("SELECT COUNT(*) FROM ibocode");
                    $unique_urls = $db->querySingle("SELECT COUNT(DISTINCT url) FROM ibo");
                    ?>
                    <div class="row">
                        <div class="col-md-4">
                            <div class="card">
                                <div class="card-body text-center">
                                    <h6>Tabela ibo</h6>
                                    <h3><?php echo number_format($total_ibo, 0, ',', '.'); ?></h3>
                                    <small>registros</small>
                                </div>
                            </div>
                        </div>
                        <div class="col-md-4">
                            <div class="card">
                                <div class="card-body text-center">
                                    <h6>Tabela ibocode</h6>
                                    <h3><?php echo number_format($total_ibocode, 0, ',', '.'); ?></h3>
                                    <small>registros</small>
                                </div>
                            </div>
                        </div>
                        <div class="col-md-4">
                            <div class="card">
                                <div class="card-body text-center">
                                    <h6>URLs únicas</h6>
                                    <h3><?php echo number_format($unique_urls, 0, ',', '.'); ?></h3>
                                    <small>em ibo</small>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                
            </div>
        </div>
    </div>
</div>

<?php
} // FIM DO IF PRINCIPAL

// Fechar conexão se ainda aberta
if ($db) {
    $db->close();
}

include ('includes/footer.php'); 
?>