<?php
session_start();

// Verifica se está logado
if (!isset($_SESSION['id'])) {
    header('Location: login.php');
    exit;
}

$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'];
        
        // Primeiro, pegar o MAC address que será removido
        $macToDelete = $db->querySingle("SELECT mac_address FROM ibo WHERE id = $itemToDelete");
        
        // Evite injeção SQL usando declarações preparadas
        $stmt = $db->prepare("DELETE FROM ibo WHERE id = :id");
        $stmt->bindValue(':id', $itemToDelete, SQLITE3_INTEGER);
        
        // Execute a exclusão
        if ($stmt->execute()) {
            // Verificar se ainda existem outros registros com o mesmo MAC
            $macStillExists = $db->querySingle("SELECT COUNT(*) FROM ibo WHERE mac_address = '$macToDelete'");
            
            // Se não existir mais nenhum registro com esse MAC, devolver 1 crédito (apenas para não-admins)
            if (!$macStillExists && !$isAdmin) {
                $dbUsers->exec("UPDATE users SET mac_amount = mac_amount + 1 WHERE id = $id");
            }
            
            // A exclusão foi bem-sucedida
            echo json_encode(array('status' => 'success'));
        } else {
            // A exclusão falhou
            echo json_encode(array('status' => 'error'));
        }
        
        exit;
    }
    
    // Verifica se é uma requisição de renovação
    if (isset($_POST['renew'])) {
        $itemToRenew = $_POST['renew'];
        $years = (int)$_POST['years'];
        
        // Pegar o MAC address e a data atual de vencimento que será renovado
        $row = $db->querySingle("SELECT mac_address, expire_date FROM ibo WHERE id = $itemToRenew", true);
        $macToRenew = $row['mac_address'];
        $currentExpireDate = $row['expire_date'];
        
        // Calcular nova data a partir da data de vencimento atual
        $newDate = date('Y-m-d', strtotime($currentExpireDate . " +$years YEAR"));
        
        // Atualizar todos os registros com o mesmo MAC
        $stmt = $db->prepare("UPDATE ibo SET expire_date = :newDate WHERE mac_address = :mac");
        $stmt->bindValue(':newDate', $newDate, SQLITE3_TEXT);
        $stmt->bindValue(':mac', $macToRenew, SQLITE3_TEXT);
        
        if ($stmt->execute()) {
            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">
        <!-- Título da Página -->
        <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>
            
            <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.php", { delete: itemId }, function(data) {
                            if (data.status === 'success') {
                                // Exclusão bem-sucedida
                                window.location.href = "users.php?r=excluido";
                            } else {
                                // Falha na exclusão
                                alert("Falha na exclusão do item com ID " + itemId);
                            }
                        }, 'json');
                    }
                });
            
                $(document).on("click", ".renew-item", function(e) {
                    e.preventDefault();
                    var itemId = $(this).data("id");
                    var currentDate = $(this).data("date");
                    
                    Swal.fire({
                        title: 'Renovar MAC',
                        html: `
                            <div class="form-group">
                                <label for="years">Por quantos anos deseja renovar?</label>
                                <select id="years" class="form-control">
                                    <option value="1">1 ano</option>
                                    <option value="2">2 anos</option>
                                    <option value="3">3 anos</option>
                                    <option value="4">4 anos</option>
                                    <option value="5">5 anos</option>
                                    <option value="6">6 anos</option>
                                    <option value="7">7 anos</option>
                                    <option value="8">8 anos</option>
                                    <option value="9">9 anos</option>
                                    <option value="10">10 anos</option>
                                    <option value="11">11 anos</option>
                                    <option value="12">12 anos</option>
                                </select>
                            </div>
                            <div class="mt-2">
                                <p>Data atual: ${new Date(currentDate).toLocaleDateString('pt-BR')}</p>
                                <p>Nova data de vencimento: <span id="new-date"></span></p>
                            </div>
                        `,
                        showCancelButton: true,
                        confirmButtonText: 'Renovar',
                        cancelButtonText: 'Cancelar',
                        didOpen: () => {
                            // Calcular nova data quando os anos mudarem
                            $('#years').change(function() {
                                var years = $(this).val();
                                var newDate = new Date(currentDate);
                                newDate.setFullYear(newDate.getFullYear() + parseInt(years));
                                $('#new-date').text(newDate.toLocaleDateString('pt-BR'));
                            });
                            
                            // Disparar o evento change inicial
                            $('#years').trigger('change');
                        },
                        preConfirm: () => {
                            return {
                                years: $('#years').val()
                            }
                        }
                    }).then((result) => {
                        if (result.isConfirmed) {
                            var years = result.value.years;
                            
                            $.post("users.php", { 
                                renew: itemId,
                                years: years
                            }, function(data) {
                                if (data.status === 'success') {
                                    window.location.href = "users.php?r=renovado";
                                } else {
                                    alert(data.message || "Falha na renovação");
                                }
                            }, '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?")) {
                            // Crie uma variável para rastrear o número de exclusões bem-sucedidas
                            var successfulDeletes = 0;
            
                            $.each(selectedItems, function(index, value) {
                                $.post("users.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.");
                    }
                });
            });
            </script>
        </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>Renovar</th>
                        <th>Editar</th>
                        <th>Deletar</th>
                    </tr>
                </thead>
                <tbody>
                    <?php
                    $res = $db->query("SELECT * FROM ibo WHERE id_user = " . $_SESSION['id'] . " ORDER BY id DESC");

                    while ($row = $res->fetchArray()) {
                        $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-success border-0 renew-item" 
                                       data-id="<?php echo $iid; ?>" 
                                       data-date="<?php echo $iexpire_date; ?>">
                                        <i class='bx bx-calendar-check'></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>

<?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 "renovado":
            echo "<script>
            const Toast = Swal.mixin({
                toast: true,
                position: 'bottom',
                showConfirmButton: false,
                timer: 2000,
            })
            Toast.fire({
                icon: 'success',
                title: 'MAC renovado com sucesso!'
            })</script>";
            break;
    }
}
?>

<?php include './includes/footer.php'; ?>