<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$db = new SQLite3('./a/.eggziedb.db');
$db->exec('CREATE TABLE IF NOT EXISTS ibo (
    id INTEGER PRIMARY KEY NOT NULL,
    mac_address VARCHAR(100),
    username VARCHAR(100),
    password VARCHAR(100),
    expire_date VARCHAR(100),
    url VARCHAR(100),
    title VARCHAR(100),
    created_at VARCHAR(100)
)');

// Função para extrair parâmetros de uma URL
function getParameterFromUrl($param, $url) {
    $parts = parse_url($url);
    parse_str($parts['query'] ?? '', $query);
    return $query[$param] ?? null;
}

include 'includes/header.php';
?>

<style>
.progress {
    display: none; /* Oculta a barra de progresso inicialmente */
    height: 20px;
}
.progress-bar {
    width: 0;
    height: 100%;
    background-color: green;
    transition: width 0.5s;
}
</style>

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function() {
    // Função para adicionar novos campos para preenchimento de M3U e Nome
    $("#add_m3u_button").click(function() {
        var container = $("#m3u_fields_container");

        // Criar um novo div para os campos
        var newFieldGroup = `
            <div class="form-group mb-3">
                <label><strong>Link M3U</strong></label>
                <div class="input-group mb-2">
                    <input type="text" class="form-control" name="m3u_links[]" placeholder="Cole Aqui o LINK M3U" required/>
                </div>
                <label><strong>Nome do Cliente</strong></label>
                <div class="input-group">
                    <input type="text" class="form-control" name="client_names[]" placeholder="Nome do Cliente" required/>
                </div>
            </div>
        `;

        container.append(newFieldGroup);
    });

    // Envio do formulário via AJAX
    $("form").on("submit", function(event) {
        event.preventDefault();  // Previne o envio normal do formulário
        var formData = $(this).serialize(); // Serializa os dados do formulário

        // Exibir a barra de progresso
        $(".progress").show(); 
        $(".progress-bar").css("width", "0%"); // Reseta a barra

        var progress = 0; // Inicializa o progresso
        var estimatedTime = 36000; // Tempo estimado em milissegundos (20 segundos)
        var interval = setInterval(function() {
            if (progress < 100) {
                progress += 5; // Aumenta o progresso (ajuste conforme necessário)
                $(".progress-bar").css("width", progress + "%");
                $(".progress-bar").text(progress + "%"); // Mostra a porcentagem
            }
        }, estimatedTime / 20); // Atualiza a cada 1 segundo (20 atualizações no total)

        $.ajax({
            type: "POST",
            url: "",  // URL do script que processa o formulário
            data: formData,
            success: function(response) {
                clearInterval(interval); // Para o intervalo
                $(".progress-bar").css("width", "100%").text("100%"); // Completa a barra
                alert("Cadastro realizado com sucesso!");
                window.location.href = 'users.php'; // Redireciona após sucesso
            },
            error: function() {
                clearInterval(interval); // Para o intervalo
                $(".progress-bar").css("width", "0%").text(""); // Reseta a barra
                alert("Ocorreu um erro ao realizar o cadastro. Tente novamente.");
            },
            complete: function() {
                // Ocultar a barra de progresso após a conclusão
                $(".progress").hide();
                $(".progress-bar").css("width", "0%"); // Reseta a barra
            }
        });
    });
});
</script>

<div class="container-fluid">
    <h1 class="h3 mb-1 text-gray-800">Ativar Usuário</h1>
    <div class="card border-left-primary shadow h-100 card shadow mb-4">
        <div class="card-header py-3">
            <h6 class="m-0 font-weight-bold text-primary">
                <i class="fas fa-user"></i> Detalhes do Usuário
            </h6>
        </div>
        <div class="card-body">
            <form method="post">
                <div class="form-group">
                    <label><strong>Endereço MAC</strong></label>
                    <div class="input-group">
                        <input type="text" class="form-control text-primary" id="mac_address" name="mac_address" placeholder="Digite o Endereço MAC Aqui" required/>
                    </div>
                </div>
                <div id="m3u_fields_container">
                    <!-- Campos de Lista M3U e Nome serão adicionados aqui dinamicamente -->
                    <div class="form-group mb-3">
                        <label><strong>Link M3U</strong></label>
                        <div class="input-group mb-2">
                            <input type="text" class="form-control" name="m3u_links[]" placeholder="Cole Aqui o LINK M3U" required/>
                        </div>
                        <label><strong>Nome do Cliente</strong></label>
                        <div class="input-group">
                            <input type="text" class="form-control" name="client_names[]" placeholder="Nome do Cliente" required/>
                        </div>
                    </div>
                </div>
                <button type="button" class="btn btn-info mb-3" id="add_m3u_button">
                    <i class="fas fa-plus"></i> Adicionar Lista M3U
                </button>
                <div class="form-group">
                    <button class="btn btn-success btn-icon-split" name="submit" type="submit">
                        <span class="icon text-white-50"><i class="fas fa-check"></i></span>
                        <span class="text">Cadastrar</span>
                    </button>
                </div>
            </form>

            <!-- Barra de Progresso -->
            <div class="progress">
                <div class="progress-bar" role="progressbar"></div>
            </div>
        </div>
    </div>
</div>

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $mac_address = strtoupper($_POST['mac_address']);
    $m3u_links = $_POST['m3u_links'];
    $client_names = $_POST['client_names'];

    $start = date('Y-m-d');
    $end = date('H:i:s');
    $full = $start . 'T' . $end . '.000000Z';

    // Iterar sobre os links M3U e nomes para inserir no banco
    for ($i = 0; $i < count($m3u_links); $i++) {
        $link = $m3u_links[$i];
        $name = $client_names[$i];

        // Extrair dados do link M3U
        $server_url = explode('/get.php', $link)[0];
        $username = getParameterFromUrl("username", $link);
        $password = getParameterFromUrl("password", $link);
        $expire_date = getParameterFromUrl("exp_date", $link);

        // Se o username e password não foram extraídos, tente buscar o conteúdo do link M3U
        if (!$username || !$password || !$expire_date) {
            // Usando file_get_contents para obter o conteúdo do link
            $m3u_content = @file_get_contents($link);
            if ($m3u_content !== false) {
                preg_match('/username=([^&]*)/', $m3u_content, $username_matches);
                preg_match('/password=([^&]*)/', $m3u_content, $password_matches);
                preg_match('/exp_date=([^&]*)/', $m3u_content, $expire_matches);

                $username = $username_matches[1] ?? $username;
                $password = $password_matches[1] ?? $password;
                $expire_date = $expire_matches[1] ?? '9000-12-30'; // Valor padrão se não encontrado
            }
        }

        // Inserir no banco de dados
        $db->exec("INSERT INTO ibo(mac_address, username, password, expire_date, url, title, created_at) 
                    VALUES('$mac_address', '$username', '$password', '$expire_date', '$server_url', '$name', '$full')");
    }

    $db->close();
    // Não redirecionar aqui, pois o redirecionamento é feito no AJAX
}
?>

<?php 
include 'includes/footer.php';
?>
</html>