<?php
session_start();
$id = $_SESSION['id'];
$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;

// Se a solicitação for um POST
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Verifica se o parâmetro 'delete' foi enviado
    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, active = 1 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';

// Consulta para obter informações de admin e nível do usuário
$query = $dbUsers->prepare("SELECT admin FROM users WHERE id = :id");
$query->bindValue(':id', $id, SQLITE3_INTEGER);
$userData = $query->execute()->fetchArray(SQLITE3_ASSOC);

// Verificando se o usuário é um administrador
if ($userData['admin'] == 1) {
    $tabelaVisivel = true;
} else {
    $tabelaVisivel = false;
}
?>

<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 ChatBot</h5>
            </div>
        </div>
    </div>
    <div class="card-body">
        <?php if ($userData['admin'] == 1): ?>
        <div class="col-12">
            <center>
                <button type="submit" 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>
        <?php endif; ?>

        <div class="input-group">
            <button onclick="searchTable()" class="btn btn-primary mr-2"><i class='bx bx-search mr-1'></i>Buscar</button>
            <input class="form-control" type="text" id="searchInput" placeholder="Buscar por MAC" />
        </div>
        <br>
        
        <div class="table-responsive" id="tableContainer" <?php echo $tabelaVisivel ? "" : "style='display: none;'"; ?>>
            <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>Título</th>
                        <th>Vencimento</th>
                        <th>Ativar</th>
                        <th>Editar</th>
                        <th>Deletar</th>
                    </tr>
                </thead>
                <tbody>
                    <?php
                    $res = $db->query("SELECT * FROM ibo WHERE active = 0 ORDER BY expire_date DESC");

                    while ($row = $res->fetchArray()) {
                        $iid = $row["id"];
                        $imac = $row["mac_address"];
                        $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 $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_teste_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("users_teste.php", { delete: itemId }, function(data) {
                if (data.status === 'success') {
                    window.location.href = "users_teste.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("users_teste.php", { 
                    activate: itemId
                }, function(data) {
                    if (data.status === 'success') {
                        window.location.href = "users_teste.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("users_teste.php", { delete: value }, function(data) {
                        if (data.status === 'success') {
                            successfulDeletes++;
                        }
                        
                        if (successfulDeletes === selectedItems.length) {
                            window.location.href = "users_teste.php?r=all_excluido";
                        }
                    }, 'json');
                });
            }
        } else {
            alert("Selecione pelo menos um item para excluir.");
        }
    });
});

function searchTable() {
    var input, filter, table, tr, td, i, txtValue;
    input = document.getElementById("searchInput");
    filter = input.value.toUpperCase();
    table = document.getElementById("myTable");
    tr = table.getElementsByTagName("tr");

    for (i = 0; i < tr.length; i++) {
        td_title = tr[i].getElementsByTagName("td")[2];
        td_mac = tr[i].getElementsByTagName("td")[3];
        if (td_title || td_mac) {
            txtValue_title = td_title.textContent || td_title.innerText;
            txtValue_mac = td_mac.textContent || td_mac.innerText;
            if (txtValue_title.toUpperCase().indexOf(filter) > -1 || txtValue_mac.toUpperCase().indexOf(filter) > -1) {
                tr[i].style.display = "";
            } else {
                tr[i].style.display = "none";
            }
        }
    }

    var tableContainer = document.getElementById("tableContainer");
    if (filter !== "") {
        tableContainer.style.display = "";
    } else {
        tableContainer.style.display = "none";
    }
}
</script>

<script type="text/javascript">
document.getElementById("searchInput").addEventListener('keyup', function() { 
    var mac = document.getElementById('searchInput').value;
    var macs = mac.split(':').join('');
    macs = chunk(macs.toUpperCase(), 2).join(':');
    document.getElementById('searchInput').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 "atualizado":
            echo "<script>
            const Toast = Swal.mixin({
                toast: true,
                position: 'bottom',
                showConfirmButton: false,
                timer: 2000,
            })
            Toast.fire({
                icon: 'success',
                title: 'Usuário Atualizado com Sucesso!'
            })</script>";
            break;
        case "erro_att":
            echo "<script>
            const Toast = Swal.mixin({
                toast: true,
                position: 'bottom',
                showConfirmButton: false,
                timer: 2000,
            })
            Toast.fire({
                icon: 'error',
                title: 'Erro ao Atualizar Usuário!'
            })</script>";
            break;
        case "adicionado":
            echo "<script>
            const Toast = Swal.mixin({
                toast: true,
                position: 'bottom',
                showConfirmButton: false,
                timer: 2000,
            })
            Toast.fire({
                icon: 'success',
                title: 'Usuário Adicionado com Sucesso!'
            })</script>";
            break;
        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;
    }
}
?>

<!-- Modal (mantido do código original) -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-dialog-centered" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="myModalLabel">ATENÇÃO</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
            </div>
            <div class="modal-body">
                Essa página contém todos os testes gerados através do Teste Automático e ficará Visível a todos os Revendedores...
                <br><br>
                Localize seu Cliente através do MAC e faça ativação da lista, o cliente passará automaticamente para seu painel.
                <br><br>
                Não faça alterações em outros Clientes!!!
                <br><br>
                Qualquer dúvida, fale com o administrador do Painel.
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-danger" data-bs-dismiss="modal">Fechar</button>
            </div>
        </div>
    </div>
</div>

<script>
// Função para verificar se o cookie existe (mantido do código original)
function checkCookie() {
    var modalShown = getCookie("modalShown");
    if (!modalShown) {
        $('#myModal').modal('show');
        setCookie("modalShown", true, 1);
    }
}

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
    var expires = "expires=" + d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

function getCookie(cname) {
    var name = cname + "=";
    var decodedCookie = decodeURIComponent(document.cookie);
    var ca = decodedCookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
        }
        if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
        }
    }
    return "";
}

$(document).ready(function() {
    checkCookie();
});
</script>

<?php include './includes/footer.php'; ?>