<?php
session_start();
$id = $_SESSION['id'];
$nivel = $_SESSION['nivel'];
$db = new SQLite3("./api/db/studiolivecode_clientes.db");
$dbUsers = new SQLite3("./api/db/studiolivecode_users.db");

// Verifica se o usuário é administrador
$isAdmin = $dbUsers->querySingle("SELECT admin FROM users WHERE id = $id") == 1;

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (isset($_POST['delete'])) {
        $itemToDelete = $_POST['delete'];
        $stmt = $db->prepare("DELETE FROM ibo WHERE id = :id");
        $stmt->bindValue(':id', $itemToDelete, SQLITE3_INTEGER);
        
        if ($stmt->execute()) {
            echo json_encode(array('status' => 'success'));
        } else {
            echo json_encode(array('status' => 'error'));
        }
        exit;
    }
    
    // Verifica se é uma requisição de ativação
    if (isset($_POST['activate'])) {
        $itemToActivate = $_POST['activate'];
        
        // Verificar se o usuário tem créditos suficientes (apenas para não-admins)
        if (!$isAdmin) {
            $currentCredits = $dbUsers->querySingle("SELECT mac_amount FROM users WHERE id = $id");
            if ($currentCredits < 1) {
                echo json_encode(array('status' => 'error', 'message' => 'Créditos insuficientes'));
                exit;
            }
        }
        
        // Pegar o MAC address que será ativado
        $row = $db->querySingle("SELECT mac_address FROM ibo WHERE id = $itemToActivate", true);
        $macToActivate = $row['mac_address'];
        
        // Calcular nova data (1 ano a partir da data atual)
        $newDate = date('Y-m-d', strtotime("+1 YEAR"));
        
        // Atualizar o registro
        $stmt = $db->prepare("UPDATE ibo SET expire_date = :newDate, id_user = :userId WHERE id = :id");
        $stmt->bindValue(':newDate', $newDate, SQLITE3_TEXT);
        $stmt->bindValue(':userId', $id, SQLITE3_INTEGER);
        $stmt->bindValue(':id', $itemToActivate, SQLITE3_INTEGER);
        
        if ($stmt->execute()) {
            // Descontar 1 crédito (apenas para não-admins)
            if (!$isAdmin) {
                $dbUsers->exec("UPDATE users SET mac_amount = mac_amount - 1 WHERE id = $id");
            }
            
            echo json_encode(array('status' => 'success'));
        } else {
            echo json_encode(array('status' => 'error'));
        }
        
        exit;
    }
}

include './includes/header.php';
?>

<div class="card radius-10">
    <div class="card-header border-bottom-0 bg-transparent">
        <div class="d-flex align-items-center">
            <div>
                <h5 class="font-weight-bold mb-0">Usuários Cadastrados</h5>
            </div>
            <div class="ms-auto">
                <a href="./users_create.php">
                    <button type="button" class="btn btn-primary mr-2 radius-10">Adicionar Usuário</button>
                </a>
            </div>
        </div>
    </div>
    <div class="card-body">
        <div class="col-12">
            <form method="POST" action="search_macStudioLiveCode.php">
                <div class="input-group mb-3">
                    <input type="text" id="mac_address" name="mac_address" class="form-control" placeholder="Digite o MAC Address (e.g., AE:46:3D:52:CE:1A)" required>
                    <button type="submit" name="mac_search" class="btn btn-primary">Buscar</button>
                </div>
            </form>
        </div>

        <div class="col-12">
            <center>
                <button type="button" id="delete-selected" name="delete-selected" class="btn btn-danger mr-2"><i class='bx bx-check mr-1'></i>Excluir Selecionados</button>
            </center>
        </div>
        <br>

        <div class="table-responsive">
            <table id="myTable" class="table mb-0 align-middle">
                <thead>
                    <tr>
                        <th style="display: none;">id</th>
                        <th><input type="checkbox" id="select-all"></th>
                        <th>MAC do Dispositivo</th>
                        <th>Key</th>
                        <th>Dns</th>
                        <th>Título</th>
                        <th>Vencimento</th>
                        <th>Ativar</th>
                        <th>Editar</th>
                        <th>Deletar</th>
                    </tr>
                </thead>
                <tbody>
                    <?php
                    $rows = [];

                    if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['mac_search'])) {
                        $mac_address = trim($_POST['mac_address']);
                        $stmt = $db->prepare("SELECT * FROM ibo WHERE mac_address = :mac_address AND id_user = 0");
                        $stmt->bindValue(':mac_address', $mac_address, SQLITE3_TEXT);
                        $res = $stmt->execute();

                        while ($row = $res->fetchArray(SQLITE3_ASSOC)) {
                            $rows[] = $row;
                        }
                    }

                    foreach ($rows as $row) {
                        $iid = $row["id"];
                        $imac = $row["mac_address"];
                        $ikey = $row["key"];
                        $idns = $row["dns"];
                        $iexpire_date = $row["expire_date"];
                        $ititle = $row["title"];
                        ?>
                        <tr>
                            <td style="display: none;"><?php echo $iid; ?></td>
                            <td><input type="checkbox" name="selected_items[]" value="<?php echo $iid; ?>"></td>
                            <td><?php echo $imac; ?></td>
                            <td><?php echo $ikey; ?></td>
                            <td><?php echo $idns; ?></td>
                            <td><?php echo $ititle; ?></td>
                            <td><?php echo date('d/m/Y', strtotime($iexpire_date)); ?></td>
                            <td>
                                <div class="d-flex order-actions">
                                    <a href="javascript:void(0);" class="text-light bg-warning border-0 activate-item" 
                                       data-id="<?php echo $iid; ?>"
                                       data-mac="<?php echo $imac; ?>">
                                        <i class='bx bx-check-circle'></i>
                                    </a>
                                </div>
                            </td>
                            <td>
                                <div class="d-flex order-actions">
                                    <a href="./users_update.php?update=<?php echo $iid; ?>" class="text-light bg-primary border-0"><i class='bx bxs-edit'></i></a>
                                </div>
                            </td>
                            <td>
                                <div class="d-flex order-actions">
                                    <a href="javascript:void(0);" class="text-light bg-danger border-0 delete-item" data-id="<?php echo $iid; ?>">
                                        <i class="bx bxs-trash"></i>
                                    </a>
                                </div>
                            </td>
                        </tr>
                        <?php
                    }
                    ?>
                </tbody>
            </table>
        </div>
    </div>
</div>

<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<script>
$(document).ready(function() {
    $('#select-all').click(function() {
        $('input[name="selected_items[]"]').prop('checked', this.checked);
    });

    $(document).on("click", ".delete-item", function() {
        var itemId = $(this).data("id");

        if (confirm("Tem certeza de que deseja excluir este item?")) {
            $.post("search_macStudioLiveCode.php", { delete: itemId }, function(data) {
                if (data.status === 'success') {
                    window.location.href = "users.php?r=excluido";
                } else {
                    alert("Falha na exclusão do item com ID " + itemId);
                }
            }, 'json');
        }
    });

    $(document).on("click", ".activate-item", function(e) {
        e.preventDefault();
        var itemId = $(this).data("id");
        var macAddress = $(this).data("mac");
        
        Swal.fire({
            title: 'Ativar MAC',
            html: `
                <div class="text-center">
                    <p>Você está prestes a ativar o seguinte MAC:</p>
                    <p><strong>${macAddress}</strong></p>
                    <p>Será adicionado 1 ano a partir da data atual.</p>
                    <?php if(!$isAdmin): ?>
                    <p class="text-danger">Será descontado 1 crédito da sua conta.</p>
                    <?php endif; ?>
                </div>
            `,
            icon: 'warning',
            showCancelButton: true,
            confirmButtonText: 'Confirmar Ativação',
            cancelButtonText: 'Cancelar',
            confirmButtonColor: '#3085d6',
            cancelButtonColor: '#d33',
        }).then((result) => {
            if (result.isConfirmed) {
                $.post("search_macStudioLiveCode.php", { 
                    activate: itemId
                }, function(data) {
                    if (data.status === 'success') {
                        window.location.href = "users.php?r=ativado";
                    } else {
                        Swal.fire({
                            icon: 'error',
                            title: 'Erro na ativação',
                            text: data.message || "Ocorreu um erro ao ativar o MAC"
                        });
                    }
                }, 'json');
            }
        });
    });

    $(document).on("click", "#delete-selected", function() {
        var selectedItems = [];

        $.each($("input[name='selected_items[]']:checked"), function(){
            selectedItems.push($(this).val());
        });

        if (selectedItems.length > 0) {
            if (confirm("Tem certeza de que deseja excluir os itens selecionados?")) {
                var successfulDeletes = 0;

                $.each(selectedItems, function(index, value) {
                    $.post("search_macStudioLiveCode.php", { delete: value }, function(data) {
                        if (data.status === 'success') {
                            successfulDeletes++;
                        }
                        
                        if (successfulDeletes === selectedItems.length) {
                            window.location.href = "users.php?r=all_excluido";
                        }
                    }, 'json');
                });
            }
        } else {
            alert("Selecione pelo menos um item para excluir.");
        }
    });
    
    // Formatação automática de MAC Address
    document.getElementById("mac_address").addEventListener('keyup', function() { 
        var mac = document.getElementById('mac_address').value.toUpperCase();
        var macs = mac.split(':').join('');
        macs = chunk(macs, 2).join(':');
        document.getElementById('mac_address').value = macs.toString();
    });
    
    function chunk(str, n) {
        var ret = [];
        var i;
        var len;

        for(i = 0, len = str.length; i < len; i += n) {
           ret.push(str.substr(i, n))
        }
        return ret;
    };
});
</script>

<?php
if (isset($_GET["r"])) {
    $result = $_GET["r"];
    switch ($result) {
        case "excluido":
            echo "<script>
            const Toast = Swal.mixin({
                toast: true,
                position: 'bottom',
                showConfirmButton: false,
                timer: 2000,
            })
            Toast.fire({
                icon: 'success',
                title: 'Usuário Excluído com Sucesso!'
            })</script>";
            break;
        case "all_excluido":
            echo "<script>
            const Toast = Swal.mixin({
                toast: true,
                position: 'bottom',
                showConfirmButton: false,
                timer: 2000,
            })
            Toast.fire({
                icon: 'success',
                title: 'Usuários Excluídos com Sucesso!'
            })</script>";
            break;
        case "ativado":
            echo "<script>
            const Toast = Swal.mixin({
                toast: true,
                position: 'bottom',
                showConfirmButton: false,
                timer: 2000,
            })
            Toast.fire({
                icon: 'success',
                title: 'MAC ativado com sucesso!'
            })</script>";
            break;
    }
}

include './includes/footer.php';