<?php
include 'verifica_login.php';
requer_admin(); // Apenas administradores podem acessar

include 'conexao.php';
$conn = conectar_banco();

// Criar tabela de usuários se não existir
$conn->query("CREATE TABLE IF NOT EXISTS usuarios (
    id INT AUTO_INCREMENT PRIMARY KEY,
    usuario VARCHAR(50) UNIQUE NOT NULL,
    senha VARCHAR(255) NOT NULL,
    nome VARCHAR(100) NOT NULL,
    nivel ENUM('administrador', 'operador') NOT NULL DEFAULT 'operador',
    ativo CHAR(1) NOT NULL DEFAULT 'S',
    data_criacao TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)");

$mensagem = '';
$tipo_mensagem = '';

// Processar ações
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $acao = $_POST['acao'] ?? '';
    
    if ($acao === 'criar') {
        $usuario = $_POST['usuario'] ?? '';
        $senha = $_POST['senha'] ?? '';
        $nome = $_POST['nome'] ?? '';
        $nivel = $_POST['nivel'] ?? 'operador';
        
        if ($usuario && $senha && $nome) {
            $senha_hash = password_hash($senha, PASSWORD_DEFAULT);
            $stmt = $conn->prepare("INSERT INTO usuarios (usuario, senha, nome, nivel) VALUES (?, ?, ?, ?)");
            $stmt->bind_param('ssss', $usuario, $senha_hash, $nome, $nivel);
            
            if ($stmt->execute()) {
                $mensagem = 'Usuário criado com sucesso!';
                $tipo_mensagem = 'sucesso';
            } else {
                $mensagem = 'Erro ao criar usuário: ' . $conn->error;
                $tipo_mensagem = 'erro';
            }
            $stmt->close();
        }
    } elseif ($acao === 'editar') {
        $id = $_POST['id'] ?? 0;
        $usuario = $_POST['usuario'] ?? '';
        $nome = $_POST['nome'] ?? '';
        $nivel = $_POST['nivel'] ?? 'operador';
        $senha = $_POST['senha'] ?? '';
        
        if ($id && $usuario && $nome) {
            if ($senha) {
                $senha_hash = password_hash($senha, PASSWORD_DEFAULT);
                $stmt = $conn->prepare("UPDATE usuarios SET usuario=?, senha=?, nome=?, nivel=? WHERE id=?");
                $stmt->bind_param('ssssi', $usuario, $senha_hash, $nome, $nivel, $id);
            } else {
                $stmt = $conn->prepare("UPDATE usuarios SET usuario=?, nome=?, nivel=? WHERE id=?");
                $stmt->bind_param('sssi', $usuario, $nome, $nivel, $id);
            }
            
            if ($stmt->execute()) {
                $mensagem = 'Usuário atualizado com sucesso!';
                $tipo_mensagem = 'sucesso';
            } else {
                $mensagem = 'Erro ao atualizar usuário: ' . $conn->error;
                $tipo_mensagem = 'erro';
            }
            $stmt->close();
        }
    } elseif ($acao === 'desativar') {
        $id = $_POST['id'] ?? 0;
        if ($id && $id != $_SESSION['usuario_id']) {
            $stmt = $conn->prepare("UPDATE usuarios SET ativo='N' WHERE id=?");
            $stmt->bind_param('i', $id);
            if ($stmt->execute()) {
                $mensagem = 'Usuário desativado com sucesso!';
                $tipo_mensagem = 'sucesso';
            }
            $stmt->close();
        }
    } elseif ($acao === 'ativar') {
        $id = $_POST['id'] ?? 0;
        if ($id) {
            $stmt = $conn->prepare("UPDATE usuarios SET ativo='S' WHERE id=?");
            $stmt->bind_param('i', $id);
            if ($stmt->execute()) {
                $mensagem = 'Usuário ativado com sucesso!';
                $tipo_mensagem = 'sucesso';
            }
            $stmt->close();
        }
    }
}

// Buscar todos os usuários
$usuarios = $conn->query("SELECT * FROM usuarios ORDER BY nome ASC");
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Gerenciar Usuários - BELGO</title>
    <style>
        body { font-family: Arial, sans-serif; background-color: #f4f4f4; margin: 0; padding: 20px; }
        .container { max-width: 1200px; margin: 0 auto; background: white; padding: 30px; border-radius: 8px; box-shadow: 0 0 10px rgba(0,0,0,0.1); }
        h1 { color: #004d99; border-bottom: 2px solid #ccc; padding-bottom: 10px; margin-bottom: 20px; }
        .header-actions { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; }
        .btn { padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer; text-decoration: none; display: inline-block; font-size: 14px; }
        .btn-primary { background-color: #004d99; color: white; }
        .btn-primary:hover { background-color: #003366; }
        .btn-secondary { background-color: #6c757d; color: white; }
        .btn-secondary:hover { background-color: #5a6268; }
        .btn-success { background-color: #28a745; color: white; }
        .btn-danger { background-color: #dc3545; color: white; }
        .btn-small { padding: 5px 10px; font-size: 12px; }
        
        .mensagem { padding: 15px; border-radius: 4px; margin-bottom: 20px; }
        .mensagem.sucesso { background-color: #d4edda; color: #155724; border: 1px solid #c3e6cb; }
        .mensagem.erro { background-color: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; }
        
        table { width: 100%; border-collapse: collapse; margin-top: 20px; }
        th, td { padding: 12px; text-align: left; border-bottom: 1px solid #ddd; }
        th { background-color: #004d99; color: white; }
        tr:hover { background-color: #f5f5f5; }
        
        .modal { display: none; position: fixed; z-index: 1000; left: 0; top: 0; width: 100%; height: 100%; background-color: rgba(0,0,0,0.5); }
        .modal-content { background-color: white; margin: 5% auto; padding: 30px; border-radius: 8px; width: 90%; max-width: 500px; }
        .modal-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; }
        .close { color: #aaa; font-size: 28px; font-weight: bold; cursor: pointer; }
        .close:hover { color: #000; }
        
        .form-group { margin-bottom: 15px; }
        label { display: block; font-weight: bold; margin-bottom: 5px; color: #333; }
        input[type="text"], input[type="password"], select { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; }
        
        .badge { padding: 4px 8px; border-radius: 3px; font-size: 12px; font-weight: bold; }
        .badge-admin { background-color: #ffc107; color: #000; }
        .badge-operador { background-color: #17a2b8; color: white; }
        .badge-ativo { background-color: #28a745; color: white; }
        .badge-inativo { background-color: #dc3545; color: white; }
    </style>
</head>
<body>
    <div class="container">
        <h1>Gerenciar Usuários</h1>
        
        <div class="header-actions">
            <button onclick="abrirModal()" class="btn btn-primary">+ Novo Usuário</button>
            <a href="principal.php" class="btn btn-secondary">Voltar para Principal</a>
        </div>
        
        <?php if ($mensagem): ?>
        <div class="mensagem <?= $tipo_mensagem ?>">
            <?= htmlspecialchars($mensagem) ?>
        </div>
        <?php endif; ?>
        
        <table>
            <thead>
                <tr>
                    <th>ID</th>
                    <th>Usuário</th>
                    <th>Nome</th>
                    <th>Nível</th>
                    <th>Status</th>
                    <th>Data Criação</th>
                    <th>Ações</th>
                </tr>
            </thead>
            <tbody>
                <?php while($user = $usuarios->fetch_assoc()): ?>
                <tr>
                    <td><?= $user['id'] ?></td>
                    <td><?= htmlspecialchars($user['usuario']) ?></td>
                    <td><?= htmlspecialchars($user['nome']) ?></td>
                    <td>
                        <span class="badge badge-<?= $user['nivel'] ?>">
                            <?= ucfirst($user['nivel']) ?>
                        </span>
                    </td>
                    <td>
                        <span class="badge badge-<?= $user['ativo'] == 'S' ? 'ativo' : 'inativo' ?>">
                            <?= $user['ativo'] == 'S' ? 'Ativo' : 'Inativo' ?>
                        </span>
                    </td>
                    <td><?= date('d/m/Y H:i', strtotime($user['data_criacao'])) ?></td>
                    <td>
                        <button onclick='editarUsuario(<?= json_encode($user) ?>)' class="btn btn-primary btn-small">Editar</button>
                        <?php if ($user['id'] != $_SESSION['usuario_id']): ?>
                            <?php if ($user['ativo'] == 'S'): ?>
                                <form method="POST" style="display:inline;" onsubmit="return confirm('Desativar este usuário?')">
                                    <input type="hidden" name="acao" value="desativar">
                                    <input type="hidden" name="id" value="<?= $user['id'] ?>">
                                    <button type="submit" class="btn btn-danger btn-small">Desativar</button>
                                </form>
                            <?php else: ?>
                                <form method="POST" style="display:inline;">
                                    <input type="hidden" name="acao" value="ativar">
                                    <input type="hidden" name="id" value="<?= $user['id'] ?>">
                                    <button type="submit" class="btn btn-success btn-small">Ativar</button>
                                </form>
                            <?php endif; ?>
                        <?php endif; ?>
                    </td>
                </tr>
                <?php endwhile; ?>
            </tbody>
        </table>
    </div>
    
    <!-- Modal -->
    <div id="modalUsuario" class="modal">
        <div class="modal-content">
            <div class="modal-header">
                <h2 id="modalTitulo">Novo Usuário</h2>
                <span class="close" onclick="fecharModal()">&times;</span>
            </div>
            <form method="POST" id="formUsuario">
                <input type="hidden" name="acao" id="acao" value="criar">
                <input type="hidden" name="id" id="id" value="">
                
                <div class="form-group">
                    <label>Usuário (login)</label>
                    <input type="text" name="usuario" id="usuario" required>
                </div>
                
                <div class="form-group">
                    <label>Nome Completo</label>
                    <input type="text" name="nome" id="nome" required>
                </div>
                
                <div class="form-group">
                    <label>Senha <span id="senhaOpcional" style="color:#999; font-weight:normal;"></span></label>
                    <input type="password" name="senha" id="senha">
                </div>
                
                <div class="form-group">
                    <label>Nível de Acesso</label>
                    <select name="nivel" id="nivel">
                        <option value="operador">Operador</option>
                        <option value="administrador">Administrador</option>
                    </select>
                </div>
                
                <button type="submit" class="btn btn-primary">Salvar</button>
                <button type="button" onclick="fecharModal()" class="btn btn-secondary">Cancelar</button>
            </form>
        </div>
    </div>
    
    <script>
        function abrirModal() {
            document.getElementById('modalUsuario').style.display = 'block';
            document.getElementById('modalTitulo').textContent = 'Novo Usuário';
            document.getElementById('acao').value = 'criar';
            document.getElementById('formUsuario').reset();
            document.getElementById('senha').required = true;
            document.getElementById('senhaOpcional').textContent = '';
        }
        
        function editarUsuario(user) {
            document.getElementById('modalUsuario').style.display = 'block';
            document.getElementById('modalTitulo').textContent = 'Editar Usuário';
            document.getElementById('acao').value = 'editar';
            document.getElementById('id').value = user.id;
            document.getElementById('usuario').value = user.usuario;
            document.getElementById('nome').value = user.nome;
            document.getElementById('nivel').value = user.nivel;
            document.getElementById('senha').value = '';
            document.getElementById('senha').required = false;
            document.getElementById('senhaOpcional').textContent = '(deixe em branco para não alterar)';
        }
        
        function fecharModal() {
            document.getElementById('modalUsuario').style.display = 'none';
        }
        
        window.onclick = function(event) {
            const modal = document.getElementById('modalUsuario');
            if (event.target === modal) {
                fecharModal();
            }
        };
    </script>
</body>
</html>
<?php $conn->close(); ?>
