<?php
session_start();
require_once 'conexao.php';

// Verificar se o usuário está logado como administrador
if (
    !isset($_SESSION['logado']) || $_SESSION['logado'] !== true ||
    !in_array($_SESSION['permissao'], ['admin', 'super_admin'])
) {
    header("HTTP/1.1 403 Forbidden");
    echo "Acesso restrito: apenas administradores ou super administradores podem acessar esta página.";
    exit;
}

// Obter tenant_id da sessão, obrigatório para multitenant
if (!isset($_SESSION['tenant_id'])) {
    die('Tenant ID não definido. Acesso negado.');
}
$tenant_id = $_SESSION['tenant_id'];

// Verificar se o ID do usuário foi fornecido
if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
    header("Location: gerenciar_usuarios.php");
    exit;
}

$usuario_id = (int)$_GET['id'];

// Buscar informações do usuário
$stmt = $conn->prepare("
    SELECT id, nome, email, permissao, cargo, ativo 
    FROM usuarios 
    WHERE id = ? AND tenant_id = ?
");
$stmt->bind_param("ii", $usuario_id, $tenant_id);
$stmt->execute();
$result = $stmt->get_result();

if ($result->num_rows === 0) {
    $_SESSION['mensagem'] = "Usuário não encontrado ou não pertence a este tenant.";
    header("Location: gerenciar_usuarios.php");
    exit;
}

$usuario = $result->fetch_assoc();
$stmt->close();

// Gerar token CSRF se não existir
if (!isset($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}

// Mensagem de sucesso
if (isset($_SESSION['mensagem'])) {
    echo '<div style="position: fixed; top: 80px; right: 20px; padding: 10px 20px; background: #2ecc71; color: white; border-radius: 4px; z-index: 2000;">'
       . htmlspecialchars($_SESSION['mensagem'])
       . '</div>';

    unset($_SESSION['mensagem']);

    echo '<script>
            setTimeout(function() {
                const msgDiv = document.querySelector("div[style*=\'position: fixed\']"); 
                if (msgDiv) msgDiv.style.display = "none";
            }, 3000);
          </script>';
}

$erro = '';
$sucesso = '';

// Processar formulário
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Verificar token CSRF
    if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
        $erro = 'Token de segurança inválido.';
    } else {
        $nome = trim($_POST['nome'] ?? '');
        $email = trim($_POST['email'] ?? '');
        $permissao = $_POST['permissao'] ?? '';
        $cargo = trim($_POST['cargo'] ?? '');
        $ativo = $_POST['ativo'] ?? 'sim';
        $alterar_senha = isset($_POST['alterar_senha']) && $_POST['alterar_senha'] === 'sim';
        $senha = trim($_POST['senha'] ?? '');
        $confirmar_senha = trim($_POST['confirmar_senha'] ?? '');

        if (empty($erro)) {
            // Validações de formulário
            if (empty($nome) || empty($email) || empty($permissao)) {
                $erro = 'Nome, e-mail e permissão são obrigatórios.';
            } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
                $erro = 'E-mail inválido.';
            } elseif ($alterar_senha) {
                if (empty($senha) || empty($confirmar_senha)) {
                    $erro = 'Ao alterar senha, ambos os campos são obrigatórios.';
                } elseif ($senha !== $confirmar_senha) {
                    $erro = 'As senhas não coincidem.';
                } elseif (strlen($senha) < 8) {
                    $erro = 'A senha deve ter no mínimo 8 caracteres.';
                }
            }
        }

        if (empty($erro)) {
            // Verificar e-mail duplicado para o tenant (excluindo o próprio usuário)
            $stmt = $conn->prepare("SELECT id FROM usuarios WHERE email = ? AND tenant_id = ? AND id != ?");
            $stmt->bind_param("sii", $email, $tenant_id, $usuario_id);
            $stmt->execute();
            $stmt->store_result();

            if ($stmt->num_rows > 0) {
                $erro = 'Este e-mail já está cadastrado neste tenant.';
            } else {
                $stmt->close();

                // Preparar query de atualização
                if ($alterar_senha) {
                    $senha_hash = password_hash($senha, PASSWORD_DEFAULT);
                    $stmt = $conn->prepare("
                        UPDATE usuarios 
                        SET nome = ?, email = ?, permissao = ?, cargo = ?, ativo = ?, senha = ?
                        WHERE id = ? AND tenant_id = ?
                    ");
                    $stmt->bind_param("ssssssii", $nome, $email, $permissao, $cargo, $ativo, $senha_hash, $usuario_id, $tenant_id);
                } else {
                    $stmt = $conn->prepare("
                        UPDATE usuarios 
                        SET nome = ?, email = ?, permissao = ?, cargo = ?, ativo = ?
                        WHERE id = ? AND tenant_id = ?
                    ");
                    $stmt->bind_param("sssssii", $nome, $email, $permissao, $cargo, $ativo, $usuario_id, $tenant_id);
                }

                if ($stmt->execute()) {
                    if ($stmt->affected_rows > 0) {
                        $sucesso = 'Usuário atualizado com sucesso!';
                        
                        // Atualizar dados locais
                        $usuario['nome'] = $nome;
                        $usuario['email'] = $email;
                        $usuario['permissao'] = $permissao;
                        $usuario['cargo'] = $cargo;
                        $usuario['ativo'] = $ativo;
                        
                        // Redirecionar após sucesso (opcional)
                        // header("Location: gerenciar_usuarios.php?sucesso=1");
                        // exit;
                    } else {
                        $sucesso = 'Nenhuma alteração foi feita.';
                    }
                } else {
                    $erro = 'Erro ao atualizar usuário: ' . $conn->error;
                }
                
                if ($stmt) $stmt->close();
            }
        }
    }
}
?>

<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <link rel="icon" type="image/png" sizes="16x16" href="/favicon_io/favicon-16x16.png">
    <link rel="icon" type="image/png" sizes="32x32" href="/favicon_io/favicon-32x32.png">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Editar Usuário - SON</title>
    <meta name="csrf-token" content="<?= htmlspecialchars($_SESSION['csrf_token'] ?? '') ?>">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
    <style>
        /* Estilos Gerais */
        body {
            font-family: 'Arial', sans-serif;
            margin: 0;
            padding: 0;
            background-color: #f5f5f5;
            color: #333;
        }
        
        /* Cabeçalho Fixo */
        .header-fixed {
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            background-color: #f5f5f5;
            padding: 15px 20px;
            z-index: 1000;
            box-shadow: 0 2px 5px rgba(0,0,0,0.1);
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        
        .header-fixed img {
            height: 50px;
            margin-right: 15px;
        }
        
        .header-fixed h2 {
            margin: 0;
            flex-grow: 1;
            text-align: center;
        }
        
        /* Menu Lateral */
        .sidebar {
            position: fixed;
            left: 0;
            top: 80px;
            height: calc(100vh - 80px);
            width: 60px;
            background: white;
            box-shadow: 2px 0 5px rgba(0,0,0,0.1);
            z-index: 999;
            transition: width 0.3s ease;
            overflow-x: hidden;
        }
        
        .sidebar-menu {
            list-style: none;
            padding: 0;
            margin: 0;
        }
        
        .sidebar-menu li {
            border-bottom: 1px solid #eee;
        }
        
        .sidebar-menu a {
            display: flex;
            align-items: center;
            padding: 15px 20px;
            text-decoration: none;
            color: #333;
            white-space: nowrap;
            transition: background-color 0.3s;
        }
        
        .sidebar-menu i {
            width: 24px;
            height: 24px;
            margin-right: 15px;
            text-align: center;
            flex-shrink: 0;
        }
        
        .sidebar-menu .menu-text {
            opacity: 0;
            transition: opacity 0.3s ease;
        }

        /* Classes para menu */
        .menu-btn-success {
            color: #6B8E23;
        }
        
        .menu-btn-primary {
            color: #0000FF;
        }
        
        .menu-btn-danger {
            color: #e74c3c;
        }
        
        /* Conteúdo Principal */
        .content-wrapper {
            margin-top: 20px;
            padding: 20px;
            margin-left: 0;
            transition: margin-left 0.3s ease;
        }
        
        .container {
            max-width: 600px;
            margin: 0 auto;
            background: white;
            padding: 25px;
            border-radius: 8px;
            box-shadow: 0 0 15px rgba(0, 0, 0, 0.05);
        }
        
        h1 {
            color: #2c3e50;
            border-bottom: 2px solid #f1f1f1;
            padding-bottom: 12px;
            margin-bottom: 20px;
            font-size: 1.8rem;
        }
        
        .info-card {
            background: #f8f9fa;
            border-left: 4px solid #3498db;
            padding: 15px;
            margin-bottom: 20px;
            border-radius: 4px;
        }
        
        .info-card h4 {
            margin: 0 0 5px 0;
            color: #2c3e50;
        }
        
        .info-card p {
            margin: 0;
            color: #666;
            font-size: 14px;
        }
        
        .user-info {
            display: flex;
            align-items: center;
            gap: 10px;
            margin-bottom: 20px;
        }
        
        .user-photo {
            width: 60px;
            height: 60px;
            border-radius: 50%;
            background: #3498db;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 24px;
            color: white;
            font-weight: bold;
        }
        
        .user-details {
            flex: 1;
        }
        
        .user-details h3 {
            margin: 0 0 5px 0;
            color: #2c3e50;
        }
        
        .user-details p {
            margin: 0;
            color: #666;
            font-size: 14px;
        }
        
        .form-group {
            margin-bottom: 20px;
        }
        
        label {
            display: block;
            margin-bottom: 8px;
            font-weight: 600;
            color: #555;
        }
        
        input[type="text"],
        input[type="email"],
        input[type="password"],
        select {
            width: 100%;
            padding: 10px;
            border: 1px solid #ccc;
            border-radius: 4px;
            font-size: 16px;
            box-sizing: border-box;
        }
        
        .checkbox-group {
            display: flex;
            align-items: center;
            gap: 10px;
            margin-bottom: 15px;
        }
        
        .checkbox-group input[type="checkbox"] {
            width: auto;
        }
        
        .btn {
            background-color: #3498db;
            color: white;
            border: none;
            padding: 12px 20px;
            border-radius: 4px;
            cursor: pointer;
            font-size: 16px;
            transition: background-color 0.3s;
            margin-right: 10px;
        }
        
        .btn:hover {
            background-color: #2980b9;
        }
        
        .btn-cancelar {
            background-color: #e74c3c;
        }
        
        .btn-cancelar:hover {
            background-color: #c0392b;
        }
        
        .btn-success {
            background-color: #2ecc71;
        }
        
        .btn-success:hover {
            background-color: #27ae60;
        }
        
        .btn:disabled {
            background-color: #cccccc;
            cursor: not-allowed;
            opacity: 0.6;
        }
        
        .alert {
            padding: 15px;
            margin-bottom: 20px;
            border: 1px solid transparent;
            border-radius: 4px;
            text-align: center;
        }
        
        .alert-success {
            background-color: #dff0d8;
            border-color: #d6e9c6;
            color: #3c763d;
        }
        
        .alert-danger {
            background-color: #f2dede;
            border-color: #ebccd1;
            color: #a94442;
        }
        
        .alert-warning {
            background-color: #fff3cd;
            border-color: #ffeaa7;
            color: #856404;
        }
        
        .senha-section {
            background: #f8f9fa;
            padding: 20px;
            border-radius: 8px;
            margin-bottom: 20px;
            border: 1px solid #eee;
        }
        
        .senha-section h4 {
            margin: 0 0 15px 0;
            color: #2c3e50;
        }
        
        .admin-fixed-btn {
            position: fixed;
            bottom: 30px;
            right: 30px;
            background: #8e44ad;
            color: white;
            width: 60px;
            height: 60px;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 24px;
            box-shadow: 0 4px 8px rgba(0,0,0,0.2);
            z-index: 999;
            cursor: pointer;
            transition: all 0.3s;
        }

        .admin-fixed-btn:hover {
            transform: scale(1.1);
            box-shadow: 0 6px 12px rgba(0,0,0,0.3);
        }

        .admin-fixed-btn .tooltip {
            position: absolute;
            right: 70px;
            background: #333;
            color: white;
            padding: 5px 10px;
            border-radius: 4px;
            font-size: 14px;
            white-space: nowrap;
            opacity: 0;
            transition: opacity 0.3s;
            pointer-events: none;
        }

        .admin-fixed-btn:hover .tooltip {
            opacity: 1;
        }
        
        /* Responsividade */
        @media (max-width: 768px) {
            .header-fixed {
                padding: 12px 15px;
            }
            
            .header-fixed h2 {
                font-size: 1.3rem;
            }
            
            .content-wrapper {
                margin-top: 80px;
                padding: 15px;
                margin-left: 0;
            }
            
            .sidebar {
                display: none;
            }
            
            .container {
                padding: 18px;
            }
            
            .btn {
                display: block;
                width: 100%;
                margin-bottom: 10px;
                margin-right: 0;
            }
        }
    </style>
</head>
<body>

<?php include 'menu_lateral.php'; ?>

    <div class="content-wrapper">
        <div class="container">
            <h1><i class="fas fa-user-edit"></i> Editar Usuário</h1>
            
            <!-- Informações do usuário -->
            <div class="user-info">
                <div class="user-photo">
                    <?= strtoupper(substr($usuario['nome'], 0, 1)) ?>
                </div>
                <div class="user-details">
                    <h3><?= htmlspecialchars($usuario['nome']) ?></h3>
                    <p><?= htmlspecialchars($usuario['email']) ?></p>
                    <p>Cargo: <?= htmlspecialchars($usuario['cargo'] ?? 'Não informado') ?> | 
                       Status: <span style="color: <?= $usuario['ativo'] === 'sim' ? '#2ecc71' : '#e74c3c' ?>">
                       <?= $usuario['ativo'] === 'sim' ? 'Ativo' : 'Inativo' ?></span></p>
                </div>
            </div>
            
            <?php if (!empty($erro)): ?>
                <div class="alert alert-danger">
                    <?= htmlspecialchars($erro) ?>
                </div>
            <?php elseif (!empty($sucesso)): ?>
                <div class="alert alert-success">
                    <?= htmlspecialchars($sucesso) ?>
                </div>
            <?php endif; ?>

            <form method="post" action="">
                <input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token'] ?? '') ?>" />

                <div class="form-group">
                    <label for="nome">Nome:</label>
                    <input type="text" name="nome" id="nome" required 
                           value="<?= htmlspecialchars($usuario['nome']) ?>" />
                </div>

                <div class="form-group">
                    <label for="email">E-mail:</label>
                    <input type="email" name="email" id="email" required 
                           value="<?= htmlspecialchars($usuario['email']) ?>" />
                </div>

                <div class="form-group">
                    <label for="cargo">Cargo:</label>
                    <input type="text" name="cargo" id="cargo" 
                           value="<?= htmlspecialchars($usuario['cargo'] ?? '') ?>" />
                </div>

                <div class="form-group">
                    <label for="permissao">Permissão:</label>
                    <select name="permissao" id="permissao" required>
                        <option value="">-- Selecione --</option>
                        <option value="admin" <?= $usuario['permissao'] === 'admin' ? 'selected' : '' ?>>Administrador</option>
                        <option value="usuario" <?= $usuario['permissao'] === 'usuario' ? 'selected' : '' ?>>Usuário</option>
                        <option value="vendedor" <?= $usuario['permissao'] === 'vendedor' ? 'selected' : '' ?>>Vendedor</option>
                    </select>
                </div>

                <div class="form-group">
                    <label for="ativo">Status:</label>
                    <select name="ativo" id="ativo" required>
                        <option value="sim" <?= $usuario['ativo'] === 'sim' ? 'selected' : '' ?>>Ativo</option>
                        <option value="nao" <?= $usuario['ativo'] === 'nao' ? 'selected' : '' ?>>Inativo</option>
                    </select>
                </div>

                <!-- Seção para alteração de senha -->
                <div class="senha-section">
                    <h4><i class="fas fa-key"></i> Alterar Senha</h4>
                    
                    <div class="checkbox-group">
                        <input type="checkbox" name="alterar_senha" id="alterar_senha" value="sim" 
                               onchange="toggleSenhaFields()">
                        <label for="alterar_senha">Alterar senha do usuário</label>
                    </div>
                    
                    <div id="senha_fields" style="display: none;">
                        <div class="form-group">
                            <label for="senha">Nova Senha:</label>
                            <input type="password" name="senha" id="senha" minlength="8" />
                            <small style="color: #666;">Mínimo 8 caracteres</small>
                        </div>

                        <div class="form-group">
                            <label for="confirmar_senha">Confirmar Nova Senha:</label>
                            <input type="password" name="confirmar_senha" id="confirmar_senha" minlength="8" />
                        </div>
                    </div>
                </div>

                <div class="form-group">
                    <button type="submit" class="btn btn-success">
                        <i class="fas fa-save"></i> Salvar Alterações
                    </button>
                    <button type="button" class="btn btn-cancelar" onclick="window.location.href='gerenciar_usuarios.php'">
                        <i class="fas fa-times"></i> Cancelar
                    </button>
                    <?php if ($_SESSION['permissao'] === 'super_admin' && $usuario['id'] != $_SESSION['usuario_id']): ?>
                        <button type="button" class="btn" style="background-color: #f39c12;" 
                                onclick="confirmarExclusao(<?= $usuario['id'] ?>)">
                            <i class="fas fa-trash"></i> Excluir Usuário
                        </button>
                    <?php endif; ?>
                </div>
            </form>
        </div>
    </div>

    <!-- Botão Fixo para Administração -->
    <?php if (in_array($_SESSION['permissao'], ['super_admin'])): ?>
        <div class="admin-fixed-btn" onclick="window.location.href='gerenciar_sistema.php'">
            <i class="fas fa-cog"></i>
            <span class="tooltip">Administração</span>
        </div>
    <?php endif; ?>

    <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
    
    <script>
    // Função para mostrar/ocultar campos de senha
    function toggleSenhaFields() {
        const senhaFields = document.getElementById('senha_fields');
        const alterarSenhaCheckbox = document.getElementById('alterar_senha');
        
        if (alterarSenhaCheckbox.checked) {
            senhaFields.style.display = 'block';
            document.getElementById('senha').required = true;
            document.getElementById('confirmar_senha').required = true;
        } else {
            senhaFields.style.display = 'none';
            document.getElementById('senha').required = false;
            document.getElementById('confirmar_senha').required = false;
            document.getElementById('senha').value = '';
            document.getElementById('confirmar_senha').value = '';
        }
    }
    
    // Função para confirmar exclusão
    function confirmarExclusao(usuarioId) {
        Swal.fire({
            title: 'Tem certeza?',
            text: "Esta ação não pode ser desfeita! O usuário será removido permanentemente.",
            icon: 'warning',
            showCancelButton: true,
            confirmButtonColor: '#d33',
            cancelButtonColor: '#3085d6',
            confirmButtonText: 'Sim, excluir!',
            cancelButtonText: 'Cancelar'
        }).then((result) => {
            if (result.isConfirmed) {
                window.location.href = 'excluir_usuario.php?id=' + usuarioId;
            }
        });
    }
    
    // Validação do formulário
    document.querySelector('form').addEventListener('submit', function(e) {
        const alterarSenhaCheckbox = document.getElementById('alterar_senha');
        
        if (alterarSenhaCheckbox.checked) {
            const senha = document.getElementById('senha').value;
            const confirmarSenha = document.getElementById('confirmar_senha').value;
            
            if (senha !== confirmarSenha) {
                e.preventDefault();
                Swal.fire({
                    icon: 'error',
                    title: 'Erro',
                    text: 'As senhas não coincidem!'
                });
                return;
            }
            
            if (senha.length < 8) {
                e.preventDefault();
                Swal.fire({
                    icon: 'error',
                    title: 'Erro',
                    text: 'A senha deve ter no mínimo 8 caracteres!'
                });
                return;
            }
        }
    });
    
    // Mostrar/ocultar senha (opcional)
    function togglePasswordVisibility(fieldId) {
        const field = document.getElementById(fieldId);
        const type = field.getAttribute('type') === 'password' ? 'text' : 'password';
        field.setAttribute('type', type);
    }
    
    // Inicializar tooltips
    document.addEventListener('DOMContentLoaded', function() {
        // Adicionar ícone de olho nos campos de senha
        const senhaInputs = document.querySelectorAll('input[type="password"]');
        senhaInputs.forEach(input => {
            const wrapper = document.createElement('div');
            wrapper.style.position = 'relative';
            input.parentNode.insertBefore(wrapper, input);
            wrapper.appendChild(input);
            
            const toggleBtn = document.createElement('button');
            toggleBtn.type = 'button';
            toggleBtn.innerHTML = '<i class="fas fa-eye"></i>';
            toggleBtn.style.position = 'absolute';
            toggleBtn.style.right = '10px';
            toggleBtn.style.top = '50%';
            toggleBtn.style.transform = 'translateY(-50%)';
            toggleBtn.style.background = 'none';
            toggleBtn.style.border = 'none';
            toggleBtn.style.cursor = 'pointer';
            toggleBtn.style.color = '#666';
            toggleBtn.onclick = function() {
                const type = input.getAttribute('type') === 'password' ? 'text' : 'password';
                input.setAttribute('type', type);
                toggleBtn.innerHTML = type === 'password' ? '<i class="fas fa-eye"></i>' : '<i class="fas fa-eye-slash"></i>';
            };
            
            wrapper.appendChild(toggleBtn);
        });
    });
    </script>
    
    <?php 
    // Incluir o mesmo sistema de notificações da página original
    // Remova o script de notificações duplicado se já estiver incluído no menu_lateral.php
    ?>
    
    <?php include 'sino_notificacoes.php'; ?>
</body>
</html>