<?php
session_start();

// Verificar login e tenant
if (!isset($_SESSION['logado'], $_SESSION['usuario_id'], $_SESSION['tenant_id']) || $_SESSION['logado'] !== true) {
    header('Location: login.php');
    exit;
}

require_once 'conexao.php';

// Log
function registrarLog($acao, $detalhes = '') {
    $arquivoLog = 'logs/cliente_acoes.log';
    $dataHora = date('Y-m-d H:i:s');
    $usuario = $_SESSION['usuario_id'] ?? 'Sistema';
    $ip = $_SERVER['REMOTE_ADDR'] ?? 'IP desconhecido';
    $mensagem = "[$dataHora] [Usuário: $usuario] [IP: $ip] [Ação: $acao] $detalhes\n";

    if (!file_exists('logs')) mkdir('logs', 0755, true);
    file_put_contents($arquivoLog, $mensagem, FILE_APPEND);
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    try {
        if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
            throw new Exception("Token de segurança inválido");
        }

        $tenantId = (int) $_SESSION['tenant_id'];
        $usuarioId = (int) $_SESSION['usuario_id'];

        // Pegando funil e etapa escolhidos pelo usuário
        $funilId = isset($_POST['funil_id']) ? (int) $_POST['funil_id'] : null;
        $etapaId = isset($_POST['etapa_funil_id']) ? (int) $_POST['etapa_funil_id'] : null;

        if (!$funilId || !$etapaId) {
            // Se não enviados, usar padrão
            $stmt = $conn->prepare("SELECT funil_id, etapa_funil_id FROM funil_padrao WHERE tenant_id = ?");
            $stmt->bind_param("i", $tenantId);
            $stmt->execute();
            $res = $stmt->get_result();

            if ($res->num_rows > 0) {
                $row = $res->fetch_assoc();
                $funilId = $funilId ?: (int) $row['funil_id'];
                $etapaId = $etapaId ?: (int) $row['etapa_funil_id'];
            } else {
                $funilId = $funilId ?: 1;
                $etapaId = $etapaId ?: 1;
            }
            $stmt->close();
        }

        $dados = [
            'Nome' => trim($_POST['nome'] ?? ''),
            'Email' => filter_var($_POST['email'] ?? '', FILTER_VALIDATE_EMAIL) ?: null,
            'Telefone' => preg_replace('/\D/', '', $_POST['telefone'] ?? ''),
            'Telefone2' => preg_replace('/\D/', '', $_POST['telefone2'] ?? ''),
            'Endereco' => trim($_POST['endereco'] ?? ''),
            'Cidade' => trim($_POST['cidade'] ?? ''),
            'Estado' => trim($_POST['estado'] ?? ''),
            'CEP' => preg_replace('/\D/', '', $_POST['cep'] ?? ''),
            'Instagram' => trim($_POST['instagram'] ?? ''),
            'Linkedin' => trim($_POST['linkedin'] ?? ''),
            'Observacoes' => trim($_POST['observacoes'] ?? ''),
            'status' => 1,
            'funil' => $funilId,
            'etapa_funil_id' => $etapaId
        ];

        if (empty($dados['Nome'])) throw new Exception("O nome do cliente é obrigatório");

        $sql = "INSERT INTO clientes (Nome_Cliente, Email, Telefone, Telefone2, Endereco, Cidade, Estado, CEP, Instagram, Linkedin, Observacoes, status, tenant_id, usuario_cadastro, Funil, etapa_funil_id) 
                VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

        $stmt = $conn->prepare($sql);
        $stmt->bind_param(
            "sssssssssssiiiii",
            $dados['Nome'], $dados['Email'], $dados['Telefone'], $dados['Telefone2'],
            $dados['Endereco'], $dados['Cidade'], $dados['Estado'], $dados['CEP'],
            $dados['Instagram'], $dados['Linkedin'], $dados['Observacoes'],
            $dados['status'], $tenantId, $usuarioId, $dados['funil'], $dados['etapa_funil_id']
        );

        if ($stmt->execute()) {
            registrarLog('Cadastro de novo cliente', "ID: {$conn->insert_id}, Tenant ID: $tenantId, Funil: {$dados['funil']}, Etapa: {$dados['etapa_funil_id']}");
            $_SESSION['mensagem'] = 'Cliente cadastrado com sucesso!';
            header("Location: lista_clientes.php");
            exit();
        } else {
            throw new Exception("Erro ao cadastrar cliente: " . $stmt->error);
        }
    } catch (Exception $e) {
        registrarLog('Erro ao cadastrar cliente', $e->getMessage());
        $_SESSION['mensagem'] = $e->getMessage();
        header("Location: cadastrar_cliente.php");
        exit();
    }
}

if (empty($_SESSION['csrf_token'])) $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
?>

<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>Cadastrar Cliente</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css" />
    <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
    <style>
        * {
            box-sizing: border-box;
            margin: 0;
            padding: 0;
        }

        body {
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            line-height: 1.6;
            color: #333;
            background-color: #f5f5f5;
            padding-top: 80px;
        }

        .header-fixed {
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            height: 70px;
            background-color: #2c3e50;
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 0 20px;
            z-index: 1000;
            box-shadow: 0 2px 5px rgba(0,0,0,0.1);
            color: white;
        }

        .header-fixed img {
            height: 50px;
        }

        .header-fixed h2 {
            color: white;
            font-size: 1.2rem;
        }

        .menu-container {
            position: relative;
        }

        .hamburger-btn {
            font-size: 24px;
            background: none;
            border: none;
            cursor: pointer;
            color: white;
        }

        .dropdown-menu {
            display: none;
            position: absolute;
            right: 0;
            top: 70px;
            background-color: white;
            border: 1px solid #ddd;
            border-radius: 4px;
            padding: 10px;
            z-index: 999;
            min-width: 250px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
        }

        .dropdown-menu a {
            display: block;
            padding: 8px 12px;
            text-decoration: none;
            color: #333;
            border-radius: 4px;
            transition: background-color 0.2s;
        }

        .dropdown-menu a:hover {
            background-color: #f0f0f0;
        }

        .submenu {
            display: none;
            padding-left: 15px;
            border-left: 2px solid #3498db;
            margin-top: 5px;
        }

        input[type="text"],
        input[type="email"],
        input[type="file"],
        textarea,
        select {
            width: 100%;
            padding: 10px 12px;
            border: 1px solid #ddd;
            border-radius: 4px;
            font-size: 15px;
            transition: border-color 0.3s;
            margin-top: 5px;
        }

        input[type="text"]:focus,
        input[type="email"]: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: 100px;
        }

        button {
            background-color: #3498db;
            border: none;
            color: white;
            padding: 12px 25px;
            font-size: 16px;
            cursor: pointer;
            border-radius: 4px;
            transition: background-color 0.3s;
            font-weight: 500;
        }

        button:hover {
            background-color: #2980b9;
        }

        footer {
            margin-top: 40px;
            text-align: center;
            color: #777;
            font-size: 14px;
            padding: 20px 0;
            border-top: 1px solid #eee;
        }

        .menu-btn-success {
            color: #27ae60;
        }

        .menu-btn-primary {
            color: #3498db;
        }

        .menu-btn-danger {
            color: #e74c3c;
        }

        .required-field::after {
            content: " *";
            color: #e74c3c;
        }

        .form-group {
            margin-bottom: 20px;
        }

        .form-group label {
            display: block;
            margin-bottom: 5px;
            font-weight: 500;
            color: #2c3e50;
        }

        .success-message {
            color: #27ae60;
            font-weight: bold;
            margin-top: 10px;
            padding: 10px;
            background-color: #e8f8f0;
            border-radius: 4px;
            border-left: 4px solid #27ae60;
        }

        .error-message {
            color: #e74c3c;
            font-weight: bold;
            margin-top: 10px;
            padding: 10px;
            background-color: #fdecea;
            border-radius: 4px;
            border-left: 4px solid #e74c3c;
        }

        .container {
            max-width: 800px;
            margin: 0 auto;
            padding: 20px;
            background-color: white;
            border-radius: 8px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.05);
        }

        h1 {
            color: #2c3e50;
            margin-bottom: 25px;
            padding-bottom: 10px;
            border-bottom: 1px solid #eee;
        }

        @media screen and (max-width: 768px) {
            .header-fixed {
                flex-direction: row;
                height: 70px;
                padding: 0 15px;
            }

            .header-fixed h2 {
                display: none;
            }

            .container {
                padding: 15px;
            }
        }

        @media screen and (max-width: 480px) {
            .header-fixed {
                padding: 10px;
            }

            .dropdown-menu {
                width: 100%;
                left: 0;
                right: 0;
            }
        }
    </style>
</head>
<body>

    <div class="header-fixed">
        <img src="tvitec.png" alt="Logo TVITEC" />
        <h2>Sistema de Organização de Negócios</h2>
        <div style="color:white; font-weight:bold;">
            Olá, <?php echo htmlspecialchars($_SESSION['nome_usuario'] ?? 'Usuário'); ?>
        </div>
        
      <div class="menu-container">
   <button class="hamburger-btn" onclick="toggleMenu()">☰</button>
    <div class="dropdown-menu" id="dropdownMenu">
        <a href="index.php" class="menu-btn-primary">← Início</a>

        <!-- Submenu Clientes -->
        <div class="menu-item">
            <a href="javascript:void(0)" class="menu-btn-primary" onclick="toggleSubmenu('clientesSubmenu')">
                ▶ 👥 Clientes
            </a>
            <div id="clientesSubmenu" class="submenu">
                <?php if ($_SESSION['permissao'] === 'usuario' || $_SESSION['permissao'] === 'vendedor'): ?>
                    <a href="cadastrar_cliente.php" class="menu-btn-success">➕ Novo Cliente</a>
                <?php endif; ?>
                <a href="lista_clientes.php" class="menu-btn-primary">📋 Listar Clientes</a>
                <a href="importar_clientes.php" class="menu-btn-primary">📥 Importar Clientes</a>
            </div>
        </div>

        <!-- Submenu Produtos -->
        <div class="menu-item">
            <a href="javascript:void(0)" class="menu-btn-primary" onclick="toggleSubmenu('produtosSubmenu')">
                ▶ 📦 Produtos
            </a>
            <div id="produtosSubmenu" class="submenu">
                <a href="lista_produtos.php" class="menu-btn-primary">📋 Lista de Produtos</a>
                <a href="cadastrar_produto.php" class="menu-btn-primary">➕ Novo Produto</a>
            </div>
        </div>

        <a href="dashboard_clientes.php" class="menu-btn-primary">📊 Dashboard</a>
        <a href="funis.php" class="menu-btn-primary">📈 Gerenciar Funis</a>

        <?php if ($_SESSION['permissao'] === 'admin'): ?>
            <!-- Submenu Administração -->
            <div class="menu-item">
                <a href="javascript:void(0)" class="menu-btn-primary" onclick="toggleSubmenu('adminSubmenu')">
                    ▶ 👤 Administração
                </a>
                <div id="adminSubmenu" class="submenu">
                    <a href="cadastrar_usuario.php" class="menu-btn-primary">➕ Cadastrar Usuário</a>
                    <a href="gerenciar_usuarios.php" class="menu-btn-primary">👥 Gerenciar Usuários</a>
                </div>
            </div>
        <?php endif; ?>

        <a href="#" onclick="abrirModalAlterarSenha()" class="menu-btn-primary">🔒 Alterar Senha</a>
        <a href="logout.php" class="menu-btn-danger">🚪 Sair</a>
        <h6>Tvitecnologia SON v1.0</h6>
    </div>
</div>

    </div>

    <main class="content-wrapper">
        <div class="container">
            <h1><i class="fas fa-user-plus"></i> Cadastrar novo cliente</h1>

            <?php if (isset($_SESSION['mensagem'])): ?>
                <div class="<?php echo strpos($_SESSION['mensagem'], 'sucesso') !== false ? 'success-message' : 'error-message'; ?>">
                    <?php echo $_SESSION['mensagem']; unset($_SESSION['mensagem']); ?>
                </div>
            <?php endif; ?>

            <form method="POST" action="" enctype="multipart/form-data" id="formCliente">
                <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
                
                <!-- Campos ocultos para tenant_id, funil e etapa -->
                <input type="hidden" name="tenant_id" value="<?php echo $_SESSION['tenant_id']; ?>" />
                <input type="hidden" name="usuario_cadastro" value="<?php echo $_SESSION['nome_usuario']; ?>" />
                <input type="hidden" name="status" value="1" />

                <div class="form-group">
                    <label for="nome" class="required-field">Nome do Cliente</label>
                    <input type="text" id="nome" name="nome" required placeholder="Nome completo ou razão social" />
                </div>

                <div class="form-group">
                    <label for="cpf_cnpj">CPF/CNPJ</label>
                    <input type="text" id="cpf_cnpj" name="CPF_CNPJ" placeholder="000.000.000-00 ou 00.000.000/0000-00" />
                </div>

                <div class="form-group">
                    <label for="email">Email</label>
                    <input type="email" id="email" name="Email" placeholder="exemplo@dominio.com" />
                </div>

                <div class="form-group">
                    <label for="telefone">Telefone</label>
                    <input type="text" id="telefone" name="Telefone" inputmode="numeric" placeholder="(00) 0000-0000" />
                </div>

                <div class="form-group">
                    <label for="telefone2">Telefone 2</label>
                    <input type="text" id="telefone2" name="Telefone2" inputmode="numeric" placeholder="(00) 0000-0000" />
                </div>

                <div class="form-group">
                    <label for="celular">Celular</label>
                    <input type="text" id="celular" name="Celular" inputmode="numeric" placeholder="(00) 00000-0000" />
                </div>

                <div class="form-group">
                    <label for="origem">Origem</label>
                    <input type="text" id="origem" name="Origem" placeholder="Como o cliente conheceu sua empresa?" />
                </div>

                <div class="form-group">
                    <label for="endereco">Endereço</label>
                    <input type="text" id="endereco" name="Endereco" placeholder="Rua, Avenida, etc." />
                </div>

                <div class="form-group">
                    <label for="cidade">Cidade</label>
                    <input type="text" id="cidade" name="Cidade" />
                </div>

                <div class="form-group">
                    <label for="estado">Estado</label>
                    <input type="text" id="estado" name="Estado" maxlength="2" placeholder="UF" />
                </div>

                <div class="form-group">
                    <label for="bairro">Bairro</label>
                    <input type="text" id="bairro" name="Bairro" />
                </div>

                <div class="form-group">
                    <label for="complemento">Complemento</label>
                    <input type="text" id="complemento" name="Complemento" placeholder="Apartamento, bloco, etc." />
                </div>

                <div class="form-group">
                    <label for="cep">CEP</label>
                    <input type="text" id="cep" name="CEP" inputmode="numeric" placeholder="00000-000" />
                </div>

                <div class="form-group">
                    <label for="instagram">Instagram</label>
                    <input type="text" id="instagram" name="instagram" placeholder="@usuario" />
                </div>

                <div class="form-group">
                    <label for="linkedin">Linkedin</label>
                    <input type="text" id="linkedin" name="lInkedin" placeholder="linkedin.com/in/usuario" />
                </div>

                <div class="form-group">
                    <label for="Observacoes">Observações</label>
                    <textarea id="Observacoes" name="Observacoes" placeholder="Anotações importantes sobre o cliente"></textarea>
                </div>

                <!-- Seção Funil e Etapa -->
                <div class="form-group">
                    <label for="funil_id" class="required-field">Funil de Vendas</label>
                    <select name="funil_id" id="funil_id" required>
                        <?php
                        $stmt = $conn->prepare("SELECT id, nome FROM funis WHERE tenant_id = ?");
                        $stmt->bind_param("i", $_SESSION['tenant_id']);
                        $stmt->execute();
                        $result = $stmt->get_result();
                        
                        if ($result->num_rows > 0) {
                            while ($funil = $result->fetch_assoc()) {
                                echo "<option value='{$funil['id']}'>{$funil['nome']}</option>";
                            }
                        } else {
                            echo "<option value=''>Nenhum funil cadastrado</option>";
                        }
                        $stmt->close();
                        ?>
                    </select>
                </div>

                <div class="form-group">
                    <label for="etapa_funil_id" class="required-field">Etapa do Funil</label>
                    <select name="etapa_funil_id" id="etapa_funil_id" required>
                        <option value="">Carregando etapas...</option>
                    </select>
                </div>

                <div class="form-group" style="margin-top: 30px;">
                    <button type="submit" style="padding: 12px 30px; font-size: 16px;">
                        <i class="fas fa-save"></i> Cadastrar Cliente
                    </button>
                </div>
            </form>
        </div>
    </main>

    <footer>
        <p>Tvitecnologia SON v1.0 &copy; <?php echo date('Y'); ?> - Todos os direitos reservados</p>
    </footer>

    <script>
        // Funções do menu
        function toggleMenu() {
            const menu = document.getElementById('dropdownMenu');
            menu.style.display = (menu.style.display === 'block') ? 'none' : 'block';
        }

        function toggleSubmenu(id) {
            const submenu = document.getElementById(id);
            submenu.style.display = (submenu.style.display === 'block') ? 'none' : 'block';
        }

        // Função para carregar etapas do funil
        document.addEventListener('DOMContentLoaded', function() {
            const funilSelect = document.getElementById('funil_id');
            const etapaSelect = document.getElementById('etapa_funil_id');

            // Função para carregar etapas baseadas no funil selecionado
            async function carregarEtapas(funilId) {
                if (!funilId) {
                    etapaSelect.innerHTML = '<option value="">Selecione um funil primeiro</option>';
                    return;
                }

                etapaSelect.innerHTML = '<option value="">Carregando etapas...</option>';
                etapaSelect.disabled = true;

                try {
                    const response = await fetch(`obter_etapas_funil.php?funil_id=${funilId}`);
                    
                    if (!response.ok) {
                        throw new Error('Erro ao carregar etapas');
                    }

                    const etapas = await response.json();

                    etapaSelect.innerHTML = '';
                    etapaSelect.disabled = false;

                    if (etapas.length === 0) {
                        etapaSelect.innerHTML = '<option value="">Nenhuma etapa disponível</option>';
                    } else {
                        etapas.forEach(etapa => {
                            const option = document.createElement('option');
                            option.value = etapa.id;
                            option.textContent = etapa.nome;
                            etapaSelect.appendChild(option);
                        });
                    }
                } catch (error) {
                    console.error('Erro:', error);
                    etapaSelect.innerHTML = '<option value="">Erro ao carregar etapas</option>';
                }
            }

            // Carregar etapas quando a página é carregada
            if (funilSelect.value) {
                carregarEtapas(funilSelect.value);
            }

            // Atualizar etapas quando o funil mudar
            funilSelect.addEventListener('change', function() {
                carregarEtapas(this.value);
            });

            // Máscaras para campos
            document.getElementById('telefone').addEventListener('input', function(e) {
                this.value = this.value.replace(/\D/g, '')
                    .replace(/^(\d{2})(\d)/g, '($1) $2')
                    .replace(/(\d)(\d{4})$/, '$1-$2');
            });

            document.getElementById('celular').addEventListener('input', function(e) {
                this.value = this.value.replace(/\D/g, '')
                    .replace(/^(\d{2})(\d)/g, '($1) $2')
                    .replace(/(\d)(\d{4})$/, '$1-$2');
            });

            document.getElementById('cep').addEventListener('input', function(e) {
                this.value = this.value.replace(/\D/g, '')
                    .replace(/^(\d{5})(\d)/, '$1-$2');
            });
        });

        // Modal para alterar senha
        function abrirModalAlterarSenha() {
            Swal.fire({
                title: 'Alterar Senha',
                html:
                    '<input type="password" id="senha-atual" class="swal2-input" placeholder="Senha Atual" required>' +
                    '<input type="password" id="nova-senha" class="swal2-input" placeholder="Nova Senha" required>' +
                    '<input type="password" id="confirmar-senha" class="swal2-input" placeholder="Confirmar Nova Senha" required>',
                focusConfirm: false,
                showCancelButton: true,
                confirmButtonText: 'Alterar',
                cancelButtonText: 'Cancelar',
                preConfirm: () => {
                    const senhaAtual = Swal.getPopup().querySelector('#senha-atual').value;
                    const novaSenha = Swal.getPopup().querySelector('#nova-senha').value;
                    const confirmarSenha = Swal.getPopup().querySelector('#confirmar-senha').value;

                    if (!senhaAtual || !novaSenha || !confirmarSenha) {
                        Swal.showValidationMessage('Todos os campos são obrigatórios');
                        return false;
                    }

                    if (novaSenha !== confirmarSenha) {
                        Swal.showValidationMessage('As senhas não coincidem');
                        return false;
                    }

                    return { senhaAtual, novaSenha };
                }
            }).then((result) => {
                if (result.isConfirmed) {
                    // Aqui você pode adicionar a chamada AJAX para alterar a senha
                    fetch('alterar_senha.php', {
                        method: 'POST',
                        headers: {
                            'Content-Type': 'application/json',
                        },
                        body: JSON.stringify({
                            senha_atual: result.value.senhaAtual,
                            nova_senha: result.value.novaSenha,
                            csrf_token: '<?php echo $_SESSION['csrf_token']; ?>'
                        })
                    })
                    .then(response => response.json())
                    .then(data => {
                        if (data.success) {
                            Swal.fire('Sucesso!', 'Senha alterada com sucesso.', 'success');
                        } else {
                            Swal.fire('Erro!', data.message || 'Erro ao alterar senha.', 'error');
                        }
                    })
                    .catch(error => {
                        Swal.fire('Erro!', 'Ocorreu um erro ao tentar alterar a senha.', 'error');
                    });
                }
            });
        }

function toggleMenu() {
    const menu = document.getElementById('dropdownMenu');
    if (menu.style.display === 'block') {
        menu.style.display = 'none';
    } else {
        menu.style.display = 'block';
    }
}

function toggleSubmenu(id) {
    const submenu = document.getElementById(id);
    if (submenu.style.display === 'block') {
        submenu.style.display = 'none';
    } else {
        submenu.style.display = 'block';
    }
}