<!-- index.php -->
<?php 
include ('includes/header.php');

$uuid_selecionado = isset($_GET['uuid']) ? $_GET['uuid'] : '';
$obter_endereco_mac = isset($_GET['mac']) ? $_GET['mac'] : '';

/////////página atual/////////
$pagina_atual = isset($_GET['view']) ? $_GET['view'] : '';
$pagina_selecionada;

if($pagina_atual > 0){
	 $pagina_selecionada = "&view=".$pagina_atual;
}else{
	 $pagina_selecionada = '';
}
/////////página atual/////////	
//nome da tabela
$nome_tabela = "ibof";
$nome_tabela_avancado = "devop";
$nome_tabela_ordenacao = 'sort';
$nome_tabela_dns = "dns";
$pagina_usuario = "user_manage.php";
$pagina_mac = "mac_manage.php";


//chamada da tabela
//$res = $db->select($nome_tabela, '*', '', '');

//chamada dns
$resultado_dns = $db->select($nome_tabela_dns, '*', '', '');

//opção avançada do banco
$avancado = $db->select($nome_tabela_avancado, '*', 'id = :id', '', [':id' => 1]);
$por_pagina = !empty($avancado[0]['maxpg']) ? $avancado[0]['maxpg'] : '8';

//chamada de atualização
@$resultado_atualizacao = $db->select($nome_tabela, '*', 'id = :id', '', [':id' => $_GET['update']]);

//tabela de ordenação
$resultado_ordenacao = $db->select($nome_tabela_ordenacao, '*', '', '');
$valor_ordenacao = $resultado_ordenacao[0]['sort'] ? : 'padrao';

$dados_ordenacao = ['sort' => 'padrao'];
$db->insertIfEmpty($nome_tabela_ordenacao, $dados_ordenacao);

/////////////Área de pesquisa e página////////////////////////////

$resultados_por_pagina = $por_pagina;

if (isset($_GET['view'])) {
    $pagina = $_GET['view'];
} else {
    $pagina = 1;
}

$inicio_de = ($pagina - 1) * $resultados_por_pagina;

$termo_pesquisa = isset($_GET['search']) ? $_GET['search'] : '';
$marcadores = [];
$consulta_pesquisa = '';

if (!empty($termo_pesquisa)) {
    $consulta_pesquisa = "macad LIKE :termoPesquisa OR name LIKE :termoPesquisa";
    $marcadores[':termoPesquisa'] = "%$termo_pesquisa%";
}

// 2. Determinar ordem de classificação (padrão A-Z)
$ordem_classificacao = 'name ASC';
switch ($valor_ordenacao) {
        case 'padrao':
            $ordem_classificacao = 'name ASC';
            break;
        case 'AparaZ':
            $ordem_classificacao = 'name ASC';
            break;
        case 'ZparaA':
            $ordem_classificacao = 'name DESC';
            break;
        case 'Marcado_P':
            $ordem_classificacao = 'mark DESC';
            break;
        case 'NAOMarcado_P':
            $ordem_classificacao = 'mark ASC';
            break;
        case 'novo_P':
            $ordem_classificacao = 'cdate DESC';
            break;
        case 'antigo_P':
            $ordem_classificacao = 'cdate ASC';
            break;
        case 'novoAtualizado_P':
            $ordem_classificacao = 'udate DESC';
            break;
        case 'antigoAtualizado_P':
            $ordem_classificacao = 'udate ASC';
            break;
}

// 3. Cálculo da paginação
$resultado_contagem = $db->selectWithCount($nome_tabela, "id", $consulta_pesquisa, $marcadores);
$total_visualizacao = $resultado_contagem[0]['total'];
$total_paginas = ceil($total_visualizacao / $resultados_por_pagina);

// 4. Buscar registros
$res = $db->select(
    $nome_tabela,
    '*',
    $consulta_pesquisa,
    "$ordem_classificacao LIMIT $inicio_de, $resultados_por_pagina", // inserir inteiros diretamente
    $marcadores
);

/////////////////////////////////////////////////////////////

if(isset($_POST['submitU'])){
	unset($_POST['submitU']);
	$dados_atualizacao = $_POST;
	$db->update($nome_tabela, $dados_atualizacao, 'id = :id',[':id' => $_GET['update']]);
	echo "<script>window.location.href='".$pagina_usuario."?status=ok$pagina_selecionada'</script>";
}

//enviar novo
if (isset($_POST['submit'])){
	unset($_POST['submit']);
	$db->insert($nome_tabela, $_POST);
	$db->close();
	echo "<script>window.location.href='".$pagina_usuario."?status=ok'</script>";
}

//salvar ordenação
if(isset($_POST['submitS'])){
	unset($_POST['submitS']);
	$dados_atualizacao = $_POST;
	$db->update($nome_tabela_ordenacao, $dados_atualizacao, 'id = :id',[':id' => 1]);
	echo "<script>window.location.href='".$pagina_usuario."?status=ok'</script>";
}

//deletar linha
if(isset($_GET['delete'])){
	$db->delete($nome_tabela, 'id = :id',[':id' => $_GET['delete']]);
	echo "<script>window.location.href='".$pagina_usuario."?status=ok'</script>";
}

if(isset($_GET['mark'])){
	marcar($_GET['mark'],$pagina_atual);
}

function marcar($meu_id,$pagina){
    global $db;
    $nome_tabela = "ibof";
    $pagina_usuario = "user_manage.php";
    $ret = $db->select($nome_tabela, '*', 'id = :id', '', [':id' => $meu_id]);
    
    $numero_pagina;
    $nova_marca;
	$marca = $ret[0]['mark'];
	
	if($marca == 0){
	    $nova_marca = 1;
	}else{
	    $nova_marca = 0;
	}
	
	if($pagina > 0){
	    $numero_pagina = "&view=".$pagina;
	}
	else{
	    $numero_pagina = '';
	}
    
    $dados = ['mark' => $nova_marca];
    $db->update($nome_tabela, $dados, 'id = :id',[':id' => $meu_id]);
	echo "<script>window.location.href='".$pagina_usuario."?status=ok$numero_pagina'</script>";
}

function obterNomeDns($meu_uuid){
    global $db;
    $ret = $db->select('dns', '*', 'uid = :uid', '', [':uid' => $meu_uuid]);
    $nome_dns =  $ret[0]['title'];
    $url_dns =  $ret[0]['url'];
    
    if($nome_dns =='' || $nome_dns == null){
        return 'DNS ausente ➤ '.$meu_uuid;
    }else{
      return $nome_dns .' ➤ '. $url_dns;  
    }
}

function obterDataHoraAtualAuto() {
    $fuso_horario = @date_default_timezone_get();
    if (!$fuso_horario) {
        $fuso_horario = 'UTC';
    }
    date_default_timezone_set($fuso_horario);
    return date('Y-m-d H:i:s');
}

function IDPlaylist() {
    $fuso_horario = @date_default_timezone_get();
    if (!$fuso_horario) {
        $fuso_horario = 'UTC';
    }
    date_default_timezone_set($fuso_horario);
    $tempo = date('Y-m-d H:i:s');
    $mistura = md5($tempo).$tempo;
    return hash('sha256', $mistura);
}

?>
<style>
.pagination-gap {
    margin-left: 2px;
    margin-right: 2px;
    background-color: red;
    color: white;
    padding: 5px 10px;
}

.pagination-red {
    margin-left: 2px;
    margin-right: 2px;
    background-color: red;
    color: white;
    text-align: center;
    padding: 5px 10px;
}

.text-color {
    color: white;
}

.pagination .btn-group {
    flex-wrap: wrap;
    /* Botões quebram para próxima linha em telas pequenas */
    gap: 4px;
    /* Espaço entre botões */
}

/* Ajuste do tamanho do botão para mobile */
@media (max-width: 768px) {
    .pagination .btn {
        padding: 6px 10px;
        font-size: 14px;
        margin-bottom: 2px;
    }
}
</style>
<script>
document.addEventListener("DOMContentLoaded", function() {
    var inputEnderecoMac = document.getElementById("endereco_mac");

    inputEnderecoMac.addEventListener("input", function(e) {
        var valor = e.target.value;
        valor = valor.replace(/[^a-fA-F0-9]/g, "");

        var valorFormatado = "";
        for (var i = 0; i < valor.length; i++) {
            valorFormatado += valor[i];
            if ((i + 1) % 2 === 0 && i < valor.length - 1) {
                valorFormatado += ":";
            }
        }

        e.target.value = valorFormatado;
    });
});
</script>
<?php if (isset($_GET['create'])){?>

<!-- Início do Formulário -->
<div class="container-fluid pt-4 px-4">
    <div class="row g-4">
        <div class="col-12">
            <div class="bg-secondary rounded h-100 p-4">
                <h2 class="mb-4">Adicionar Novo Usuário</h6>
                    <form method="post">
                        <div class="mb-3">
                            <input type="hidden" name="plid" class="form-control" value="<?=IDPlaylist(); ?>"
                                placeholder="ID da Playlist" readonly>
                        </div>
                        <div class="mb-3">
                            <label for="exampleInputEmail1" class="form-label">Nome da Playlist</label>
                            <input type="text" name="name" class="form-control" placeholder="Nome da Playlist">
                        </div>
                        <div class="mb-3">
                            <label for="exampleInputEmail1" class="form-label">DNS</label>

                            <select class="form-select mb-3" id="uuid" name="uuid">

                                <?php foreach ($resultado_dns as $titulo): ?>
                                <option value="<?= htmlspecialchars($titulo['uid']); ?>"
                                    <?= $titulo['uid'] == $uuid_selecionado ? 'selected' : ''; ?>>
                                    <?= htmlspecialchars($titulo['title']); ?> ➤ <?= htmlspecialchars($titulo['url']); ?>
                                </option>
                                <?php endforeach; ?>

                            </select>
                        </div>
                        <div class="mb-3">
                            <label for="exampleInputEmail1" class="form-label">Endereço MAC</label>
                            <input type="text" name="macad" id="endereco_mac" value="<?=$obter_endereco_mac ?>" class="form-control"
                                placeholder="Endereço MAC">
                        </div>
                        <div class="mb-3">
                            <label for="exampleInputEmail1" class="form-label">Nome de Usuário</label>
                            <input type="text" name="username" class="form-control" placeholder="Nome de Usuário">
                        </div>
                        <div class="mb-3">
                            <label for="exampleInputEmail1" class="form-label">Senha</label>
                            <input type="text" name="password" class="form-control" placeholder="Senha">
                        </div>
                        <div class="mb-3">
                            <label for="exampleInputEmail1" class="form-label">Data de adição</label>
                            <input type="text" name="cdate" class="form-control" value="<?=obterDataHoraAtualAuto(); ?>"
                                placeholder="Data de adição" readonly>
                        </div>
                        <div class="mb-3">
                            <label for="exampleInputEmail1" class="form-label">Data de atualização</label>
                            <input type="text" name="udate" class="form-control" value="<?=obterDataHoraAtualAuto(); ?>"
                                placeholder="Data de atualização" readonly>
                        </div>
                        <div class="mb-3" type="hidden">
                            <input type="hidden" name="mark" class="form-control" value="0" placeholder="Marcação"
                                readonly>
                        </div>
                        <button type="submit" name="submit" class="btn btn-primary">Salvar</button>
                    </form>
            </div>
        </div>
    </div>
</div>
<!-- Fim do Formulário -->

<?php }else if (isset($_GET['update'])){ ?>
<div class="container-fluid pt-4 px-4">
    <div class="row g-4">
        <div class="col-12">
            <div class="bg-secondary rounded h-100 p-4">
                <h2 class="mb-4">Editar Usuário</h6>
                    <form method="post">
                        <div class="mb-3">
                            <input type="hidden" name="plid" class="form-control" value="<?=$resultado_atualizacao[0]['plid'] ?>"
                                placeholder="ID da Playlist" readonly>
                        </div>
                        <div class="mb-3">
                            <label for="exampleInputEmail1" class="form-label">Nome da Playlist</label>
                            <input type="text" name="name" class="form-control" value="<?=$resultado_atualizacao[0]['name'] ?>"
                                placeholder="Nome da Playlist">
                        </div>
                        <div class="mb-3">
                            <label for="exampleInputEmail1" class="form-label">DNS</label>
                            <select class="form-select mb-3" id="uuid" name="uuid">

                                <?php foreach ($resultado_dns as $titulo): ?>
                                <option value="<?= htmlspecialchars($titulo['uid']); ?>"
                                    <?= $titulo['uid'] == $uuid_selecionado ? 'selected' : ''; ?>>
                                    <?= htmlspecialchars($titulo['title']); ?> ➤ <?= htmlspecialchars($titulo['url']); ?>
                                </option>
                                <?php endforeach; ?>

                            </select>
                        </div>
                        <div class="mb-3">
                            <label for="exampleInputEmail1" class="form-label">Endereço MAC</label>
                            <input type="text" name="macad" id="endereco_mac" class="form-control"
                                value="<?=$resultado_atualizacao[0]['macad'] ?>" placeholder="Endereço MAC">
                        </div>
                        <div class="mb-3">
                            <label for="exampleInputEmail1" class="form-label">Nome de Usuário</label>
                            <input type="text" name="username" class="form-control" value="<?=$resultado_atualizacao[0]['username'] ?>"
                                placeholder="Nome de Usuário">
                        </div>
                        <div class="mb-3">
                            <label for="exampleInputEmail1" class="form-label">Senha</label>
                            <input type="text" name="password" class="form-control" value="<?=$resultado_atualizacao[0]['password'] ?>"
                                placeholder="Senha">
                        </div>
                        <div class="mb-3">
                            <label for="exampleInputEmail1" class="form-label">Data de adição</label>
                            <input type="text" name="cdate" class="form-control" placeholder="Data de adição"
                                value="<?=$resultado_atualizacao[0]['cdate'] ?>" readonly>
                        </div>
                        <div class="mb-3">
                            <label for="exampleInputEmail1" class="form-label">Data de atualização</label>
                            <input type="text" name="udate" class="form-control" value="<?=obterDataHoraAtualAuto(); ?>"
                                placeholder="Data de atualização" readonly>
                        </div>
                        <div class="mb-3" type="hidden">
                            <input type="hidden" name="mark" class="form-control" value="<?=$resultado_atualizacao[0]['mark'] ?>"
                                placeholder="Marcação" readonly>
                        </div>
                        <button type="submit" name="submitU" class="btn btn-primary">Atualizar</button>
                    </form>
            </div>
        </div>
    </div>
</div>
<?php }else if (isset($_GET['mark'])){ ?>

<?php }else{?>

<!-- Início da Tabela -->
<div class="container-fluid pt-4 px-4">
    <div class="row g-4">
        <div class="col-12">
            <div class="bg-secondary rounded h-100 p-4">
                <h6 class="mb-4">Pesquisar Usuário</h6>
                <div class="d-flex align-items-center gap-2">

                    <!-- Formulário de pesquisa -->
                    <form method="get" class="mb-0 flex-grow-1">
                        <div class="input-group w-100">
                            <input type="text" name="search" class="form-control"
                                placeholder="Pesquisar por Endereço MAC ou Título">
                            <button type="submit" class="btn btn-primary">Pesquisar</button>
                        </div>
                    </form>

                    <!-- Formulário de ordenação -->
                    <div class="nav-item dropdown">
                        <a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
                            <img class="rounded-circle me-lg-2" src="img/sort.png" alt=""
                                style="width: 40px; height: 40px;">
                        </a>
                        <div class="dropdown-menu dropdown-menu-end bg-secondary border-0 rounded-0 rounded-bottom m-0">
                            
                            <form method="post" class="mb-0">
                                <input type="hidden" name="sort" class="form-control" value="padrao">
                                <button type="submit" name="submitS" class="dropdown-item" style="color: red;">
                                    Padrão
                                </button>
                            </form>

                            <!-- Ordenação 1 -->
                            <form method="post" class="mb-0">
                                <input type="hidden" name="sort" class="form-control" value="AparaZ">
                                <button type="submit" name="submitS" class="dropdown-item" style="color: red;">
                                    A até Z
                                </button>
                            </form>

                            <!-- Ordenação 2 -->
                            <form method="post" class="mb-0">
                                <input type="hidden" name="sort" class="form-control" value="ZparaA">
                                <button type="submit" name="submitS" class="dropdown-item" style="color: red;">
                                    Z até A
                                </button>
                            </form>

                            <!-- Ordenação 3 -->
                            <form method="post" class="mb-0">
                                <input type="hidden" name="sort" class="form-control" value="Marcado_P">
                                <button type="submit" name="submitS" class="dropdown-item" style="color: red;">
                                    Marcados Primeiro
                                </button>
                            </form>
                            
                            <form method="post" class="mb-0">
                                <input type="hidden" name="sort" class="form-control" value="NAOMarcado_P">
                                <button type="submit" name="submitS" class="dropdown-item" style="color: red;">
                                    Não Marcados Primeiro
                                </button>
                            </form>
                            
                            <form method="post" class="mb-0">
                                <input type="hidden" name="sort" class="form-control" value="novo_P">
                                <button type="submit" name="submitS" class="dropdown-item" style="color: red;">
                                    Mais Recentes Primeiro
                                </button>
                            </form>
                            
                            <form method="post" class="mb-0">
                                <input type="hidden" name="sort" class="form-control" value="antigo_P">
                                <button type="submit" name="submitS" class="dropdown-item" style="color: red;">
                                    Mais Antigos Primeiro
                                </button>
                            </form>
                            
                            <form method="post" class="mb-0">
                                <input type="hidden" name="sort" class="form-control" value="novoAtualizado_P">
                                <button type="submit" name="submitS" class="dropdown-item" style="color: red;">
                                    Atualizados Recentemente Primeiro
                                </button>
                            </form>
                            
                            <form method="post" class="mb-0">
                                <input type="hidden" name="sort" class="form-control" value="antigoAtualizado_P">
                                <button type="submit" name="submitS" class="dropdown-item" style="color: red;">
                                    Atualizados Antigamente Primeiro
                                </button>
                            </form>

                        </div>
                    </div>

                </div>
            </div>
        </div>
    </div>
</div>

<div class="container-fluid pt-4 px-4">
    <div class="row g-4">
        <div class="col-12">
            <div class="bg-secondary rounded h-100 p-4">
                <h2 class="mb-4">Usuário Atual</h6>
                    <div class="text-end">
                        <a type="button" href="./<?=$pagina_usuario ?>?create" class="btn btn-square btn-primary m-2"><i
                                class="fa fa-plus"></i></a>
                    </div>

                    <div class="table-responsive">
                        <table class="table">
                            <thead>
                                <tr>
                                    <th>#</th>
                                    <th>Nome da Playlist</th>
                                    <th>DNS</th>
                                    <th>Endereço MAC</th>
                                    <th>Configurações MAC</th>
                                    <th>Editar</th>
                                    <th>Excluir</th>
                                    <th>Marcar</th>
                                </tr>
                            </thead>
                            <?php foreach ($res as $linha) {
							?>
                            <tbody>
                                <tr>
                                    <td><?=$linha['id']; ?></a></td>
                                    <td><?=$linha['name'] ?></a></td>
                                    <td><?=obterNomeDns($linha['uuid'])?></a></td>
                                    <td><?=$linha['macad'] ?></td>
                                    <td><a class="btn btn-square btn-warning m-2"
                                            href="<?php echo $pagina_mac; ?>?create&mac=<?php echo $linha['macad']; ?>&name=<?php echo $linha['name']; ?>">
                                            <i class="fa fa-id-card"></i>
                                        </a></td>
                                    <td><a class="btn btn-square btn-success m-2"
                                            href="<?php echo $pagina_usuario; ?>?update=<?php echo $linha['id']; ?>&uuid=<?php echo $linha['uuid']; ?><?php echo $pagina_selecionada; ?>">
                                            <i class="fa fa-pencil-square-o"></i>
                                        </a></td>
                                    <td><a class="btn btn-square btn-primary m-2" href="#"
                                            data-href="<?php echo $pagina_usuario; ?>?delete=<?php echo $linha['id']; ?>"
                                            data-bs-toggle="modal" data-bs-target="#confirm-delete">
                                            <i class="fa fa-trash"></i>
                                        </a></td>

                                    <td>
                                        <a name="submitmark"
                                            class="btn btn-square <?=($linha['mark'] == 1 ? 'btn-warning' : 'btn-outline-warning')?> m-2"
                                            href="<?php echo $pagina_usuario; ?>?mark=<?php echo $linha['id']; ?><?php echo $pagina_selecionada; ?>">
                                            <i class="fa fa-star"></i>
                                        </a>
                                    </td>

                                </tr>
                            </tbody>
                            <?php
							}?>
                        </table>
                    </div>
            </div>
        </div>
    </div>
</div>

<div class="container-fluid pt-4 px-4">
    <div class="row g-4">
        <div class="col-12">
            <div class="bg-secondary rounded h-100 p-4">
                <?php
                        $eh_mobile = false;
                        if (preg_match('/(android|iphone|ipad|ipod|blackberry|iemobile|opera mini)/i', $_SERVER['HTTP_USER_AGENT'])) {
                            $eh_mobile = true;
                        }
                        
                        $janela_max = $eh_mobile ? 3 : 5; // mobile -> 3, desktop -> 5
                        ?>
                <style>
                @media (max-width: 768px) {

                    .pagination .btn-primary,
                    .pagination .btn-warning {
                        padding: 5px 8px;
                    }
                }
                </style>

                <?php if ($resultados_por_pagina < $total_visualizacao) { ?>
                <div class="pagination">
                    <div class="btn-toolbar" role="toolbar" aria-label="Paginação">
                        <div class="btn-group me-2" role="group" aria-label="Grupo de paginação">

                            <?php 
                                    $inicio_janela = max(1, $pagina - floor($janela_max / 2));
                                    $fim_janela = min($total_paginas, $inicio_janela + $janela_max - 1);
                        
                                    if ($fim_janela - $inicio_janela + 1 < $janela_max) {
                                        $inicio_janela = max(1, $fim_janela - $janela_max + 1);
                                    }
                        
                                    // Botão anterior
                                    if ($pagina > 1) { 
                                    ?>
                            <a class="btn btn-primary" href='<?=$pagina_usuario ?>?view=<?=$pagina - 1?><?=$termo_pesquisa?>'>
                                <?=$eh_mobile ? '&lt;' : 'Anterior'?>
                            </a>
                            <?php } ?>

                            <!-- Primeiras páginas se a janela não começar de 1 -->
                            <?php if ($inicio_janela > 1) { ?>
                            <a class="btn btn-primary" href='<?=$pagina_usuario ?>?view=1<?=$termo_pesquisa?>'>1</a>
                            <?php if ($inicio_janela > 2) echo "..."; ?>
                            <?php } ?>

                            <!-- Janela de páginas -->
                            <?php for ($i = $inicio_janela; $i <= $fim_janela; $i++) { ?>
                            <a class="btn <?php echo $i == $pagina ? 'btn-warning' : 'btn-primary'; ?>"
                                href='<?=$pagina_usuario ?>?view=<?=$i?><?=$termo_pesquisa?>'><?=$i?></a>
                            <?php } ?>

                            <!-- Últimas páginas se a janela não alcançar o fim -->
                            <?php if ($fim_janela < $total_paginas) { ?>
                            <?php if ($fim_janela < $total_paginas - 1) echo "..."; ?>
                            <a class="btn btn-primary"
                                href='<?=$pagina_usuario ?>?view=<?=$total_paginas?><?=$termo_pesquisa?>'><?=$total_paginas?></a>
                            <?php } ?>

                            <!-- Botão próximo -->
                            <?php if ($pagina < $total_paginas) { ?>
                            <a class="btn btn-primary" href='<?=$pagina_usuario ?>?view=<?=$pagina + 1?><?=$termo_pesquisa?>'>
                                <?=$eh_mobile ? '&gt;' : 'Próximo'?>
                            </a>
                            <?php } ?>

                        </div>
                    </div>
                </div>
                <?php } ?>

            </div>
        </div>
    </div>
</div>
<!-- Fim da Tabela -->

<?php }?>
<!-- Início do Rodapé -->
<?php include ('includes/footer.php');?>
<!-- Fim do Rodapé -->
</body>

</html>