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

// CSRF token
if (!isset($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}

// Verifica se usuário está logado
if (!isset($_SESSION['logado']) || $_SESSION['logado'] !== true) {
    header('Location: login.php');
    exit;
}

// Informações da sessão
$tenant_id = $_SESSION['tenant_id'] ?? null;
$usuario_id = $_SESSION['usuario_id'] ?? null;
$permissao = $_SESSION['permissao'] ?? 'usuario';
$is_admin = ($permissao === 'admin');

// Validação do tenant_id
if (!$tenant_id || !is_numeric($tenant_id)) {
    die("Erro: tenant_id inválido.");
}

// Process form submission
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Validate CSRF token
    if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
        $_SESSION['mensagem'] = "Token de segurança inválido!";
        header('Location: cadastrar_produto.php');
        exit;
    }

    // Processar importação de CSV se enviado
    if (isset($_FILES['arquivo_csv']) && $_FILES['arquivo_csv']['error'] === UPLOAD_ERR_OK) {
        $file = $_FILES['arquivo_csv']['tmp_name'];
        $usuarioId = $_SESSION['usuario_id'] ?? 0;
        $nomeUsuario = $_SESSION['usuario_nome'] ?? 'Sistema';
        
        try {
            $handle = fopen($file, 'r');
            if ($handle === false) {
                throw new Exception("Não foi possível abrir o arquivo CSV.");
            }
            
            // Pular cabeçalho se existir
            fgetcsv($handle);
            
            $conn->begin_transaction();
            $count = 0;
            
            while (($data = fgetcsv($handle)) !== false) {
                // Verificar se a linha tem pelo menos 3 colunas (nome, descricao, valor)
                if (count($data) < 3) continue;
                
                $nome = trim($data[0]);
                $descricao = trim($data[1]);
                $valor = str_replace(['R$', '.', ','], ['', '', '.'], trim($data[2]));
                $valor = (float)$valor;
                $ativo = isset($data[3]) ? (int)$data[3] : 1;
                
                if (empty($nome)) continue;
                
                $sql = "INSERT INTO lista_produtos 
                        (nome, descricao, valor, ativo, usuario_id, nome_usuario, tenant_id, data_cadastro) 
                        VALUES (?, ?, ?, ?, ?, ?, ?, NOW())";
                
                $stmt = $conn->prepare($sql);
                $stmt->bind_param("ssdissi", $nome, $descricao, $valor, $ativo, $usuarioId, $nomeUsuario, $tenant_id);
                $stmt->execute();
                $count++;
            }
            
            $conn->commit();
            fclose($handle);
            
            $_SESSION['mensagem'] = "Importação concluída com sucesso! {$count} produtos cadastrados.";
            header('Location: lista_produtos.php');
            exit;
            
        } catch (Exception $e) {
            $conn->rollback();
            $_SESSION['mensagem'] = "Erro na importação: " . $e->getMessage();
            header('Location: cadastrar_produto.php');
            exit;
        }
    }
    
    // Processar cadastro manual de produto
    $nome = trim($_POST['nome'] ?? '');
    $descricao = trim($_POST['descricao'] ?? '');
    $valor = str_replace(['R$', '.', ','], ['', '', '.'], trim($_POST['valor'] ?? '0'));
    $valor = (float)$valor;
    $ativo = isset($_POST['ativo']) ? 1 : 0;
    $usuarioId = $_SESSION['usuario_id'] ?? 0;
    $nomeUsuario = $_SESSION['usuario_nome'] ?? 'Sistema';

    // Basic validation
    if (empty($nome)) {
        $_SESSION['mensagem'] = "O nome do produto é obrigatório!";
        header('Location: cadastrar_produto.php');
        exit;
    }

    try {
        // Prepare SQL incluindo tenant_id
        $sql = "INSERT INTO lista_produtos 
                (nome, descricao, valor, ativo, usuario_id, nome_usuario, tenant_id, data_cadastro) 
                VALUES (?, ?, ?, ?, ?, ?, ?, NOW())";
        
        $stmt = $conn->prepare($sql);
        if (!$stmt) {
            throw new Exception("Erro ao preparar a consulta: " . $conn->error);
        }

        // Bind incluindo tenant_id
        $stmt->bind_param("ssdissi", $nome, $descricao, $valor, $ativo, $usuarioId, $nomeUsuario, $tenant_id);
        
        if ($stmt->execute()) {
            $_SESSION['mensagem'] = "Produto cadastrado com sucesso!";
            header('Location: lista_produtos.php');
            exit;
        } else {
            throw new Exception("Erro ao executar a consulta: " . $stmt->error);
        }
    } catch (Exception $e) {
        $_SESSION['mensagem'] = $e->getMessage();
        header('Location: cadastrar_produto.php');
        exit;
    }
}

// Exibir mensagem (caso não seja requisição AJAX)
if ($_SERVER['REQUEST_METHOD'] !== 'POST' || !isset($_POST['ajax'])) {
    if (isset($_SESSION['mensagem'])) {
        echo '<div class="mensagem-flutuante" id="mensagemFlutuante">'
           . htmlspecialchars($_SESSION['mensagem'])
           . '</div>';
        
        unset($_SESSION['mensagem']);
        
        echo '<script>
                setTimeout(function() {
                    const msg = document.getElementById("mensagemFlutuante");
                    if (msg) msg.style.display = "none";
                }, 3000);
              </script>';
    }
}

$conn->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>SON - Cadastrar Produto</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">
    <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 0;
            padding: 0;
            background-color: #f5f5f5;
        }
        
        .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 Recolhível - AGORA NA ESQUERDA */
        .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:hover {
            width: 250px;
        }
*/        
        .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 a:hover {
            background-color: #f5f5f5;
        }
*/       
        .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: 120px;
            padding: 20px;
        }
        
        .container {
            max-width: 1800px;
            margin: 0 auto;
            background: white;
            padding: 25px;
            border-radius: 8px;
            box-shadow: 0 0 15px rgba(0, 0, 0, 0.05);
        }
        
        /* Estilos para o perfil */
        .profile-container {
            max-width: 800px;
            margin: 0 auto;
        }
        
        .profile-info {
            background: white;
            padding: 30px;
            border-radius: 8px;
            box-shadow: 0 0 15px rgba(0, 0, 0, 0.05);
        }
        
        .profile-info ul {
            list-style: none;
            padding: 0;
        }
        
        .profile-info li {
            padding: 15px 0;
            border-bottom: 1px solid #eee;
            font-size: 1.1em;
        }
        
        .profile-info li:last-child {
            border-bottom: none;
        }
        
        .profile-info strong {
            display: inline-block;
            width: 200px;
            color: #555;
        }
        
        /* Responsividade */
        @media (max-width: 768px) {
            .header-fixed {
                padding: 12px 15px;
            }
            
            .header-fixed h2 {
                font-size: 1.3rem;
            }
            
            .content-wrapper {
                margin-top: 80px;
                padding: 15px;
            }
            
            .container {
                padding: 18px;
            }
            
            .profile-info li {
                font-size: 1em;
            }
            
            .profile-info strong {
                width: 120px;
            }
        }
    
        /* Conteúdo Principal */
        .container {
            max-width: 1000px;
            margin: 0 auto;
            background: white;
            padding: 25px;
            border-radius: 8px;
            box-shadow: 0 0 15px rgba(0, 0, 0, 0.05);
        }
        
        h1 {
            color: #333;
            border-bottom: 1px solid #eee;
            padding-bottom: 10px;
            display: flex;
            align-items: center;
            gap: 10px;
        }
        
        /* Formulário */
        .form-group {
            margin-bottom: 20px;
        }
        
        label {
            display: block;
            margin-bottom: 8px;
            font-weight: 600;
            color: #2c3e50;
        }
        
        .required:after {
            content: " *";
            color: #e74c3c;
        }
        
        input, textarea, select {
            width: 100%;
            padding: 10px 12px;
            border: 1px solid #ddd;
            border-radius: 4px;
            font-size: 16px;
            transition: border-color 0.3s;
        }
        
        input:focus, textarea:focus, select:focus {
            border-color: #3498db;
            outline: none;
            box-shadow: 0 0 0 2px rgba(52, 152, 219, 0.2);
        }
        
        textarea {
            min-height: 120px;
            resize: vertical;
        }
        
        .checkbox-container {
            display: flex;
            align-items: center;
            margin: 20px 0;
        }
        
        .checkbox-container input {
            width: auto;
            margin-right: 10px;
        }
        
        /* Botões */
        .btn {
            padding: 10px 18px;
            border: none;
            border-radius: 4px;
            color: white;
            cursor: pointer;
            font-size: 16px;
            transition: all 0.3s;
            display: inline-flex;
            align-items: center;
            gap: 8px;
        }
        
        .btn:hover {
            transform: translateY(-2px);
            box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
        }
        
        .btn-primary {
            background-color: #3498db;
        }
        
        .btn-primary:hover {
            background-color: #2980b9;
        }
        
        .btn-success {
            background-color: #2ecc71;
        }
        
        .btn-success:hover {
            background-color: #27ae60;
        }
        
        /* Seção de importação CSV */
        .csv-import-section {
            margin: 40px 0;
            padding: 20px;
            border: 1px dashed #ccc;
            border-radius: 8px;
            background-color: #f9f9f9;
        }
        
        .csv-import-section h2 {
            margin-top: 0;
            color: #333;
            display: flex;
            align-items: center;
            gap: 10px;
        }
        
        .csv-import-section ul {
            margin: 15px 0;
            padding-left: 20px;
        }
        
        .csv-import-section li {
            margin-bottom: 8px;
        }
        
        .download-sample {
            display: inline-block;
            margin-top: 15px;
            color: #3498db;
            text-decoration: none;
            font-weight: bold;
        }
        
        .download-sample:hover {
            text-decoration: underline;
        }
        
        /* Mensagem Flutuante */
        .mensagem-flutuante {
            position: fixed;
            top: 90px;
            right: 25px;
            padding: 14px 24px;
            background: #2ecc71;
            color: white;
            border-radius: 4px;
            z-index: 2000;
            box-shadow: 0 3px 10px rgba(0, 0, 0, 0.15);
            font-weight: 500;
            animation: slideIn 0.3s ease-out;
        }
        
        @keyframes slideIn {
            from {
                transform: translateY(-20px);
                opacity: 0;
            }
            to {
                transform: translateY(0);
                opacity: 1;
            }
        }
        
        /* Botão Fixo para Administração */
        .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-right: 0;
            }
            
            .sidebar {
                display: none;
            }
            
            .container {
                padding: 18px;
            }
        }
    </style>
</head>
<body>


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

    <!-- Conteúdo Principal -->
    <div class="content-wrapper">
        <div class="container">
            <h1><i class="fas fa-box"></i> Cadastrar Novo Produto</h1>
            
            <!-- Formulário de cadastro manual -->
            <form method="POST" id="productForm" enctype="multipart/form-data">
                <input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>">
                
                <div class="form-group">
                    <label for="nome" class="required">Nome do Produto</label>
                    <input type="text" name="nome" id="nome" required>
                </div>
                
                <div class="form-group">
                    <label for="descricao">Descrição</label>
                    <textarea name="descricao" id="descricao"></textarea>
                </div>
                
                <div class="form-group">
                    <label for="valor" class="required">Valor (R$)</label>
                    <input type="text" name="valor" id="valor" placeholder="0,00" required>
                </div>
                
                <div class="checkbox-container">
                    <input type="checkbox" name="ativo" id="ativo" checked>
                    <label for="ativo">Produto ativo</label>
                </div>
                
                <button type="submit" class="btn btn-success">
                    <i class="fas fa-save"></i> Cadastrar Produto
                </button>
            </form>
            
            <!-- Seção de importação CSV -->
            <div class="csv-import-section">
                <h2><i class="fas fa-file-import"></i> Importar Produtos via CSV</h2>
                <p>Importe vários produtos de uma só vez usando um arquivo CSV. O arquivo deve seguir o formato abaixo:</p>
                
                <ul>
                    <li><strong>Coluna 1:</strong> Nome do produto (obrigatório)</li>
                    <li><strong>Coluna 2:</strong> Descrição (opcional)</li>
                    <li><strong>Coluna 3:</strong> Valor (ex: 100,00 ou 100.00)</li>
                    <li><strong>Coluna 4:</strong> Ativo (1 para ativo, 0 para inativo - opcional, padrão é 1)</li>
                </ul>
                
                <form method="POST" enctype="multipart/form-data">
                    <input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>">
                    
                    <div class="form-group">
                        <label for="arquivo_csv">Arquivo CSV</label>
                        <input type="file" name="arquivo_csv" id="arquivo_csv" accept=".csv" required>
                    </div>
                    
                    <button type="submit" class="btn btn-primary">
                        <i class="fas fa-file-import"></i> Importar Produtos
                    </button>
                </form>
                
                <a href="modelo_produtos.csv" class="download-sample" download>
                    <i class="fas fa-download"></i> Baixar modelo de CSV
                </a>
            </div>
        </div>
    </div>



    <!-- Modal de Alteração de Senha -->
    <div id="modalSenha" style="display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.5); z-index:2000; justify-content:center; align-items:center;">
        <div style="background:white; padding:25px; border-radius:8px; width:100%; max-width:400px;">
            <h2 style="margin-top:0;">Alterar Senha</h2>
            <form id="formAlterarSenha" onsubmit="alterarSenha(event)">
                <div style="margin-bottom:15px;">
                    <label style="display:block; margin-bottom:5px;">Senha Atual</label>
                    <input type="password" id="senhaAtual" required style="width:100%; padding:8px; border:1px solid #ddd; border-radius:4px;">
                </div>
                <div style="margin-bottom:15px;">
                    <label style="display:block; margin-bottom:5px;">Nova Senha</label>
                    <input type="password" id="novaSenha" required style="width:100%; padding:8px; border:1px solid #ddd; border-radius:4px;">
                </div>
                <div style="margin-bottom:15px;">
                    <label style="display:block; margin-bottom:5px;">Confirmar Nova Senha</label>
                    <input type="password" id="confirmarSenha" required style="width:100%; padding:8px; border:1px solid #ddd; border-radius:4px;">
                </div>
                <div id="mensagemSenha" style="margin-bottom:15px;"></div>
                <div style="display:flex; justify-content:space-between;">
                    <button type="button" onclick="fecharModalAlterarSenha()" style="padding:8px 15px; background:#6c757d; color:white; border:none; border-radius:4px; cursor:pointer;">Cancelar</button>
                    <button type="submit" style="padding:8px 15px; background:#28a745; color:white; border:none; border-radius:4px; cursor:pointer;">Alterar Senha</button>
                </div>
            </form>
        </div>
    </div>

    <script>
        // Format currency field
        document.getElementById('valor').addEventListener('input', function(e) {
            let value = e.target.value.replace(/\D/g, '');
            value = (value / 100).toFixed(2);
            value = value.replace('.', ',');
            value = value.replace(/(\d)(\d{3})(\d{3}),/g, "$1.$2.$3,");
            value = value.replace(/(\d)(\d{3}),/g, "$1.$2,");
            e.target.value = value;
        });

        // Form validation
        document.getElementById('productForm').addEventListener('submit', function(e) {
            const nome = document.getElementById('nome').value.trim();
            const valor = document.getElementById('valor').value.trim();
            
            if (!nome) {
                e.preventDefault();
                Swal.fire({
                    title: 'Atenção!',
                    text: 'Por favor, preencha o nome do produto',
                    icon: 'warning',
                    confirmButtonText: 'Entendi'
                });
                return;
            }
            
            if (!valor) {
                e.preventDefault();
                Swal.fire({
                    title: 'Atenção!',
                    text: 'Por favor, preencha o valor do produto',
                    icon: 'warning',
                    confirmButtonText: 'Entendi'
                });
                return;
            }
        });

        // Funções para o modal de alteração de senha
        function abrirModalAlterarSenha() {
            document.getElementById('modalSenha').style.display = 'flex';
        }

        function fecharModalAlterarSenha() {
            document.getElementById('modalSenha').style.display = 'none';
            document.getElementById('mensagemSenha').textContent = '';
            document.getElementById('formAlterarSenha').reset();
        }

        function alterarSenha(event) {
            event.preventDefault();
            
            const senhaAtual = document.getElementById('senhaAtual').value;
            const novaSenha = document.getElementById('novaSenha').value;
            const confirmarSenha = document.getElementById('confirmarSenha').value;
            const mensagemElement = document.getElementById('mensagemSenha');
            const btnSubmit = event.target.querySelector('button[type="submit"]');
            
            // Validações
            if (novaSenha !== confirmarSenha) {
                mensagemElement.textContent = 'As senhas não coincidem!';
                mensagemElement.style.color = 'red';
                return;
            }
            
            if (novaSenha.length < 6) {
                mensagemElement.textContent = 'A senha deve ter pelo menos 6 caracteres!';
                mensagemElement.style.color = 'red';
                return;
            }
            
            // Desabilitar botão durante a requisição
            btnSubmit.disabled = true;
            btnSubmit.innerHTML = '<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span> Processando...';
            
            // Enviar requisição
            fetch('alterar_senha.php', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                    'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').content
                },
                body: JSON.stringify({
                    senhaAtual: senhaAtual,
                    novaSenha: novaSenha
                })
            })
            .then(response => {
                if (!response.ok) {
                    throw new Error('Erro na requisição');
                }
                return response.json();
            })
            .then(data => {
                if (data.success) {
                    mensagemElement.textContent = data.message || 'Senha alterada com sucesso!';
                    mensagemElement.style.color = 'green';
                    setTimeout(fecharModalAlterarSenha, 2000);
                } else {
                    throw new Error(data.message || 'Erro ao alterar senha');
                }
            })
            .catch(error => {
                console.error('Erro:', error);
                mensagemElement.textContent = error.message || 'Erro ao processar a solicitação!';
                mensagemElement.style.color = 'red';
            })
            .finally(() => {
                btnSubmit.disabled = false;
                btnSubmit.textContent = 'Alterar Senha';
            });
        }

        function abrirTelefone() {
            window.open('webfone.php', 'TelefoneVirtual', 'width=400,height=600,resizable=no');
        }
    </script>
</body>
</html>