
<?php
include '../config.php';
include '../configuracao/modelo.php'; // Garante que a função validaAcessoTela está carregada

session_start();
$numero_da_tela = 1; // ID gerado pelo banco

if ($_SESSION['usuario'] !== 'admin') {
    if (!validaAcessoTela($mysqli, $_SESSION['id'], $numero_da_tela)) {
        echo "<script>alert('Sem permissão para o teste número $numero_da_tela!'); window.location.href='../lista/index.php';</script>";
        exit();
    }
}

// Ativa relatórios de erros
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

// Variáveis para controle do modo de Edição
$modo_edicao = false;
$id_editar = 0;
$user_selecionado = '';
$tela_selecionada = '';
$ativo_selecionado = 'S';
$enum_selecionado = 'PERMISSAO_TELA';

// --------------------------------------------------------
// ACTION 1: EXCLUIR VÍNCULO (GET)
// --------------------------------------------------------
if (isset($_GET['excluir'])) {
    $id_excluir = intval($_GET['excluir']);
    
    $stmt = $mysqli->prepare("DELETE FROM tela_usuarios WHERE codigo = ?");
    $stmt->bind_param("i", $id_excluir);
    if ($stmt->execute()) {
        echo "<script>alert('Vínculo excluído com sucesso!'); window.location.href='vincular_tela.php';</script>";
        exit();
    }
}

// --------------------------------------------------------
// ACTION 2: CARREGAR DADOS PARA EDIÇÃO (GET)
// --------------------------------------------------------
if (isset($_GET['editar'])) {
    $id_editar = intval($_GET['editar']);
    $modo_edicao = true;
    
    $stmt = $mysqli->prepare("SELECT * FROM tela_usuarios WHERE codigo = ?");
    $stmt->bind_param("i", $id_editar);
    $stmt->execute();
    $dados_vinculo = $stmt->get_result()->fetch_assoc();
    
    if ($dados_vinculo) {
        $user_selecionado = $dados_vinculo['tela_usuarios_usuarios'];
        $tela_selecionada = $dados_vinculo['tela_usuarios_tela'];
        $ativo_selecionado = $dados_vinculo['ativo'];
        $enum_selecionado = $dados_vinculo['enumsistema'];
    }
}

// --------------------------------------------------------
// ACTION 3: SALVAR OU ATUALIZAR VÍNCULO (POST)
// --------------------------------------------------------
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $id_usuario = intval($_POST['id_usuario']);
    $codigo_tela = intval($_POST['codigo_tela']);
    $ativo = $_POST['ativo'];
    $enumsistema = $_POST['enumsistema'];
    $data_atual = date('Y-m-d');
    
    try {
        if (isset($_POST['id_vinculo_edicao']) && intval($_POST['id_vinculo_edicao']) > 0) {
            // --- MODO ATUALIZAR (EDITAR) ---
            $id_vinculo = intval($_POST['id_vinculo_edicao']);
            
            // Verifica duplicidade ignorando o próprio registro que está sendo editado
            $stmt_check = $mysqli->prepare("
                SELECT codigo FROM tela_usuarios 
                WHERE tela_usuarios_usuarios = ? AND tela_usuarios_tela = ? AND codigo <> ?
            ");
            $stmt_check->bind_param("iii", $id_usuario, $codigo_tela, $id_vinculo);
            $stmt_check->execute();
            
            if ($stmt_check->get_result()->num_rows > 0) {
                echo "<script>alert('Erro: Este usuário já possui acesso a esta tela!'); window.history.back();</script>";
                exit();
            }
            
            // Executa Update
            $stmt_update = $mysqli->prepare("
                UPDATE tela_usuarios 
                SET ativo = ?, enumsistema = ?, tela_usuarios_tela = ?, tela_usuarios_usuarios = ? 
                WHERE codigo = ?
            ");
            $stmt_update->bind_param("ssiii", $ativo, $enumsistema, $codigo_tela, $id_usuario, $id_vinculo);
            if ($stmt_update->execute()) {
                echo "<script>alert('Vínculo atualizado com sucesso!'); window.location.href='vincular_tela.php';</script>";
                exit();
            }
            
        } else {
            // --- MODO INSERIR (NOVO SALVAR) ---
            // Verifica se o vínculo já existe
            $stmt_check = $mysqli->prepare("
                SELECT codigo FROM tela_usuarios WHERE tela_usuarios_usuarios = ? AND tela_usuarios_tela = ?
            ");
            $stmt_check->bind_param("ii", $id_usuario, $codigo_tela);
            $stmt_check->execute();
            
            if ($stmt_check->get_result()->num_rows > 0) {
                echo "<script>alert('Atenção: Este usuário já possui acesso a esta tela!'); window.history.back();</script>";
                exit();
            }
            
            // Executa Insert
            $stmt_insert = $mysqli->prepare("
                INSERT INTO tela_usuarios (ativo, enumsistema, data, tela_usuarios_tela, tela_usuarios_usuarios) 
                VALUES (?, ?, ?, ?, ?)
            ");
            $stmt_insert->bind_param("sssii", $ativo, $enumsistema, $data_atual, $codigo_tela, $id_usuario);
            if ($stmt_insert->execute()) {
                echo "<script>alert('Vínculo salvo com sucesso!'); window.location.href='vincular_tela.php';</script>";
                exit();
            }
        }
    } catch (Exception $e) {
        $erro = addslashes($e->getMessage());
        echo "<script>alert('Erro no Banco: $erro'); window.history.back();</script>";
    }
}

// --------------------------------------------------------
// CONSULTAS PARA ALIMENTAR A TELA
// --------------------------------------------------------
$lista_usuarios = $mysqli->query("SELECT id, usuario FROM usuarios ORDER BY usuario ASC");
$lista_telas = $mysqli->query("SELECT codigo, tela_nome FROM tela ORDER BY codigo ASC");

// Busca a lista completa de vínculos atuais fazendo JOIN para trazer os nomes legíveis
$lista_vinculos = $mysqli->query("
    SELECT tu.codigo as id_vinculo, tu.ativo, tu.enumsistema, tu.data, 
           u.usuario as nome_usuario, t.tela_nome as nome_tela, t.codigo as cod_tela
    FROM tela_usuarios tu
    JOIN usuarios u ON tu.tela_usuarios_usuarios = u.id
    JOIN tela t ON tu.tela_usuarios_tela = t.codigo
    ORDER BY tu.codigo DESC
");
?>

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <title>Gestão Unificada de Permissões</title>
</head>
<body style="padding: 20px; font-family: sans-serif; background: #f4f6f9; color: #333;">

<div style="max-width: 900px; margin: auto;">

    <h2>👥 Painel Unificado de Permissões</h2>
    <hr>

    <div style="background: #fff; padding: 20px; border: 1px solid #ddd; border-radius: 6px; margin-bottom: 30px; box-shadow: 0 2px 4px rgba(0,0,0,0.05);">
        <h3 style="margin-top: 0; color: #0056b3;">
            <?php echo $modo_edicao ? "📝 Editar Vínculo (Código: $id_editar)" : "✨ Novo Vínculo de Permissão"; ?>
        </h3>
        
        <form method="POST">
            <input type="hidden" name="id_vinculo_edicao" value="<?php echo $id_editar; ?>">

            <div style="display: flex; gap: 15px; flex-wrap: wrap; margin-bottom: 15px;">
                <div style="flex: 1; min-width: 200px;">
                    <label style="display:block; margin-bottom:5px; font-weight:bold;">Operador:</label>
                    <select name="id_usuario" required style="width:100%; padding:8px; border:1px solid #ccc; border-radius:4px;">
                        <option value="">-- Selecione --</option>
                        <?php 
                        $lista_usuarios->data_seek(0);
                        while($user = $lista_usuarios->fetch_assoc()): 
                            $selected = ($user['id'] == $user_selecionado) ? 'selected' : '';
                        ?>
                            <option value="<?php echo $user['id']; ?>" <?php echo $selected; ?>>
                                <?php echo htmlspecialchars($user['usuario']); ?>
                            </option>
                        <?php endwhile; ?>
                    </select>
                </div>

                <div style="flex: 1; min-width: 200px;">
                    <label style="display:block; margin-bottom:5px; font-weight:bold;">Tela (Teste Nº):</label>
                    <select name="codigo_tela" required style="width:100%; padding:8px; border:1px solid #ccc; border-radius:4px;">
                        <option value="">-- Selecione --</option>
                        <?php 
                        $lista_telas->data_seek(0);
                        while($tela = $lista_telas->fetch_assoc()): 
                            $selected = ($tela['codigo'] == $tela_selecionada) ? 'selected' : '';
                        ?>
                            <option value="<?php echo $tela['codigo']; ?>" <?php echo $selected; ?>>
                                Teste Nº <?php echo $tela['codigo']; ?> - <?php echo htmlspecialchars($tela['tela_nome'] ?? 'Sem Nome'); ?>
                            </option>
                        <?php endwhile; ?>
                    </select>
                </div>
            </div>

            <div style="display: flex; gap: 15px; flex-wrap: wrap; margin-bottom: 20px;">
                <div style="width: 150px;">
                    <label style="display:block; margin-bottom:5px; font-weight:bold;">Status:</label>
                    <select name="ativo" style="width:100%; padding:8px; border:1px solid #ccc; border-radius:4px;">
                        <option value="S" <?php echo ($ativo_selecionado == 'S') ? 'selected' : ''; ?>>Ativo (S)</option>
                        <option value="N" <?php echo ($ativo_selecionado == 'N') ? 'selected' : ''; ?>>Inativo (N)</option>
                    </select>
                </div>

                <div style="flex: 1; min-width: 200px;">
                    <label style="display:block; margin-bottom:5px; font-weight:bold;">Identificador Sistema:</label>
                    <input type="text" name="enumsistema" value="<?php echo htmlspecialchars($enum_selecionado); ?>" required 
                           style="width:100%; padding:8px; border:1px solid #ccc; border-radius:4px; box-sizing: border-box;">
                </div>
            </div>

            <div>
                <button type="submit" class="botaoazul" style="padding: 10px 20px; background: #0056b3; color: white; border: none; border-radius: 4px; cursor: pointer; font-weight: bold;">
                    <?php echo $modo_edicao ? "Salvar Alterações" : "Gravar Permissão"; ?>
                </button>

                <?php if ($modo_edicao): ?>
                    <a href="vincular_tela.php" style="margin-left: 10px; color: #666; text-decoration: none; font-size: 14px;">Cancelar Edição</a>
                <?php endif; ?>
            </div>
        </form>
    </div>

    <h3>📋 Vínculos Cadastrados no Banco</h3>
    <table border="1" style="width: 100%; border-collapse: collapse; background: white; border: 1px solid #ddd;">
        <thead>
            <tr style="background: #e9ecef; text-align: left;">
                <th style="padding: 10px; width: 60px;">Reg.</th>
                <th style="padding: 10px;">Usuário</th>
                <th style="padding: 10px;">Tela Autorizada</th>
                <th style="padding: 10px; width: 80px; text-align: center;">Status</th>
                <th style="padding: 10px;">Identificador</th>
                <th style="padding: 10px; width: 100px;">Data</th>
                <th style="padding: 10px; width: 150px; text-align: center;">Ações</th>
            </tr>
        </thead>
        <tbody>
            <?php if ($lista_vinculos->num_rows == 0): ?>
                <tr>
                    <td colspan="7" style="padding: 15px; text-align: center; color: #888;">Nenhum vínculo cadastrado ainda.</td>
                </tr>
            <?php endif; ?>
            
            <?php while($vinculo = $lista_vinculos->fetch_assoc()): ?>
                <tr style="border-bottom: 1px solid #eee;">
                    <td style="padding: 10px; font-weight: bold;"><?php echo $vinculo['id_vinculo']; ?></td>
                    <td style="padding: 10px;"><?php echo htmlspecialchars($vinculo['nome_usuario']); ?></td>
                    <td style="padding: 10px;">
                        <span style="background: #fff3cd; padding: 2px 6px; border-radius: 4px; font-size: 12px; font-family: monospace; font-weight: bold;">
                            Nº <?php echo $vinculo['cod_tela']; ?>
                        </span> 
                        <?php echo htmlspecialchars($vinculo['nome_tela'] ?? 'Sem Nome'); ?>
                    </td>
                    <td style="padding: 10px; text-align: center;">
                        <span style="padding: 3px 8px; border-radius: 12px; font-size: 12px; font-weight: bold; 
                                     background: <?php echo $vinculo['ativo'] == 'S' ? '#d4edda; color: #155724;' : '#f8d7da; color: #721c24;'; ?>">
                            <?php echo $vinculo['ativo']; ?>
                        </span>
                    </td>
                    <td style="padding: 10px; font-size: 13px; color: #555;"><?php echo htmlspecialchars($vinculo['enumsistema']); ?></td>
                    <td style="padding: 10px; font-size: 13px;"><?php echo date('d/m/Y', strtotime($vinculo['data'])); ?></td>
                    <td style="padding: 10px; text-align: center;">
                        <a href="vincular_tela.php?editar=<?php echo $vinculo['id_vinculo']; ?>" 
                           style="color: #0056b3; text-decoration: none; margin-right: 12px; font-weight: bold;">✏️ Editar</a>
                        
                        <a href="javascript:if(confirm('Deseja realmente apagar esta permissão?')) { window.location.href='vincular_tela.php?excluir=<?php echo $vinculo['id_vinculo']; ?>'; }" 
                           style="color: #dc3545; text-decoration: none; font-weight: bold;">🗑️ Apagar</a>
                    </td>
                </tr>
            <?php endwhile; ?>
        </tbody>
    </table>

    <p style="margin-top: 25px;">
        <a href="index.php" style="color: #666; text-decoration: none;">← Voltar ao Gerenciamento de Usuários</a>
    </p>

</div>

</body>
</html>