<?php
session_start();

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

// Verificar tenant_id
$tenant_id = $_SESSION['tenant_id'] ?? null;
if (!$tenant_id) {
    die("Tenant não identificado.");
}

// Verificar permissões do usuário atual
$usuario_id = $_SESSION['usuario_id'] ?? null;
$permissao = $_SESSION['permissao'] ?? 'usuario';
$is_admin = ($permissao === 'admin');

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

require_once 'conexao.php';

// ========== FUNÇÕES DE CONTROLE DE ACESSO ========== //

function usuarioPodeVisualizarFunil($conn, $usuario_id, $funil_id) {
    global $is_admin;
    if ($is_admin) return true;
    
    $stmt = $conn->prepare("SELECT 1 FROM permissoes_funis WHERE usuario_id = ? AND funil_id = ? AND visualizar = 1");
    $usuario_id_var = $usuario_id;
    $funil_id_var = $funil_id;
    $stmt->bind_param("ii", $usuario_id_var, $funil_id_var);
    $stmt->execute();
    return $stmt->get_result()->num_rows > 0;
}

function usuarioPodeEditarFunil($conn, $usuario_id, $funil_id) {
    global $is_admin;
    if ($is_admin) return true;
    
    $stmt = $conn->prepare("SELECT 1 FROM permissoes_funis WHERE usuario_id = ? AND funil_id = ? AND editar = 1");
    $usuario_id_var = $usuario_id;
    $funil_id_var = $funil_id;
    $stmt->bind_param("ii", $usuario_id_var, $funil_id_var);
    $stmt->execute();
    return $stmt->get_result()->num_rows > 0;
}

function usuarioPodeGerenciarFunil($conn, $usuario_id, $funil_id) {
    global $is_admin;
    if ($is_admin) return true;
    
    $stmt = $conn->prepare("SELECT 1 FROM permissoes_funis WHERE usuario_id = ? AND funil_id = ? AND gerenciar = 1");
    $usuario_id_var = $usuario_id;
    $funil_id_var = $funil_id;
    $stmt->bind_param("ii", $usuario_id_var, $funil_id_var);
    $stmt->execute();
    return $stmt->get_result()->num_rows > 0;
}

function funilTemClientes($conn, $funil_id, $tenant_id) {
    $stmt = $conn->prepare("SELECT COUNT(*) as total FROM clientes WHERE funil_id = ? AND tenant_id = ?");
    $funil_id_var = $funil_id;
    $tenant_id_var = $tenant_id;
    $stmt->bind_param("ii", $funil_id_var, $tenant_id_var);
    $stmt->execute();
    $result = $stmt->get_result();
    $row = $result->fetch_assoc();
    $total_clientes = $row['total'];
    $stmt->close();
    
    return $total_clientes > 0;
}

// Função para obter contagem atualizada de clientes por funil
function obterContagemClientesPorFunil($conn, $tenant_id) {
    $clientes_por_funil = [];
    $stmt = $conn->prepare("SELECT funil_id, COUNT(*) as total FROM clientes WHERE tenant_id = ? GROUP BY funil_id");
    $tenant_id_var = $tenant_id;
    $stmt->bind_param("i", $tenant_id_var);
    $stmt->execute();
    $result = $stmt->get_result();
    while ($row = $result->fetch_assoc()) {
        $clientes_por_funil[$row['funil_id']] = $row['total'];
    }
    $stmt->close();
    return $clientes_por_funil;
}

// ========== HANDLERS DE AÇÕES ========== //

// Ativar funil
if (isset($_GET['ativar'])) {
    $funil_id = intval($_GET['ativar']);
    $funil_id_var = $funil_id;
    
    if (!usuarioPodeGerenciarFunil($conn, $usuario_id, $funil_id)) {
        $_SESSION['erro'] = "Você não tem permissão para esta ação";
        header("Location: funis.php");
        exit;
    }

    $token = $_GET['csrf_token'] ?? '';
    if (!isset($_GET['csrf_token']) || $token !== $_SESSION['csrf_token']) {
        $_SESSION['erro'] = "Token de segurança inválido!";
        header("Location: funis.php");
        exit;
    }

    $stmt = $conn->prepare("UPDATE funis SET ativo = TRUE WHERE id = ? AND tenant_id = ?");
    $tenant_id_var = $tenant_id;
    $stmt->bind_param("ii", $funil_id_var, $tenant_id_var);
    
    if ($stmt->execute()) {
        $_SESSION['mensagem'] = "Funil ativado com sucesso!";
    } else {
        $_SESSION['erro'] = "Erro ao ativar funil";
    }
    $stmt->close();
    header("Location: " . $_SERVER['HTTP_REFERER']);
    exit;
}

// Desativar funil
if (isset($_GET['desativar'])) {
    $funil_id = intval($_GET['desativar']);
    $funil_id_var = $funil_id;
    
    if (!usuarioPodeGerenciarFunil($conn, $usuario_id, $funil_id)) {
        $_SESSION['erro'] = "Você não tem permissão para esta ação";
        header("Location: funis.php");
        exit;
    }

    $token = $_GET['csrf_token'] ?? '';
    if (!isset($_GET['csrf_token']) || $token !== $_SESSION['csrf_token']) {
        $_SESSION['erro'] = "Token de segurança inválido!";
        header("Location: funis.php");
        exit;
    }

    $stmt = $conn->prepare("UPDATE funis SET ativo = FALSE WHERE id = ? AND tenant_id = ?");
    $tenant_id_var = $tenant_id;
    $stmt->bind_param("ii", $funil_id_var, $tenant_id_var);
    $stmt->execute();
    $stmt->close();
    $_SESSION['mensagem'] = "Funil desativado com sucesso!";
    header("Location: " . $_SERVER['HTTP_REFERER']);
    exit;
}

// Excluir funil
if (isset($_GET['excluir'])) {
    $funil_id = intval($_GET['excluir']);
    $funil_id_var = $funil_id;
    
    if (!usuarioPodeGerenciarFunil($conn, $usuario_id, $funil_id)) {
        $_SESSION['erro'] = "Você não tem permissão para esta ação";
        header("Location: funis.php");
        exit;
    }

    $token = $_GET['csrf_token'] ?? '';
    if (!isset($_GET['csrf_token']) || $token !== $_SESSION['csrf_token']) {
        $_SESSION['erro'] = "Token de segurança inválido!";
        header("Location: funis.php");
        exit;
    }

    // VERIFICAÇÃO ATUALIZADA - Buscar dados frescos do banco
    if (funilTemClientes($conn, $funil_id, $tenant_id)) {
        $_SESSION['erro'] = "Não é possível excluir o funil pois existem clientes vinculados a ele. Transfira os clientes para outro funil antes de excluir.";
        header("Location: funis.php");
        exit;
    }

    $conn->begin_transaction();
    try {
        // Verificar se o funil pertence ao tenant (também atualizado)
        $stmt = $conn->prepare("SELECT id FROM funis WHERE id = ? AND tenant_id = ?");
        $tenant_id_var = $tenant_id;
        $stmt->bind_param("ii", $funil_id_var, $tenant_id_var);
        $stmt->execute();
        if ($stmt->get_result()->num_rows === 0) {
            throw new Exception("Funil não encontrado ou não pertence ao seu tenant");
        }
        $stmt->close();

        // Remover permissões primeiro
        $stmt = $conn->prepare("DELETE FROM permissoes_funis WHERE funil_id = ?");
        $stmt->bind_param("i", $funil_id_var);
        $stmt->execute();
        $stmt->close();

        // Remover etapas
        $stmt = $conn->prepare("DELETE FROM etapas_funis WHERE funil_id = ?");
        $stmt->bind_param("i", $funil_id_var);
        $stmt->execute();
        $stmt->close();

        // Remover funil
        $stmt = $conn->prepare("DELETE FROM funis WHERE id = ? AND tenant_id = ?");
        $tenant_id_var = $tenant_id;
        $stmt->bind_param("ii", $funil_id_var, $tenant_id_var);
        $stmt->execute();
        $stmt->close();

        $conn->commit();
        $_SESSION['mensagem'] = "Funil excluído com sucesso!";
    } catch (Exception $e) {
        $conn->rollback();
        $_SESSION['erro'] = "Erro ao excluir funil: " . $e->getMessage();
    }
    header("Location: " . $_SERVER['HTTP_REFERER']);
    exit;
}

// Gerenciar permissões
if (isset($_POST['salvar_permissoes'])) {
    $funil_id = intval($_POST['funil_id']);
    $funil_id_var = $funil_id;
    
    if (!usuarioPodeGerenciarFunil($conn, $usuario_id, $funil_id)) {
        $_SESSION['erro'] = "Você não tem permissão para gerenciar este funil";
        header("Location: funis.php");
        exit;
    }

    $token = $_POST['csrf_token'] ?? '';
    if (!isset($_POST['csrf_token']) || $token !== $_SESSION['csrf_token']) {
        $_SESSION['erro'] = "Token de segurança inválido!";
        header("Location: funis.php");
        exit;
    }

    $conn->begin_transaction();
    try {
        // Remover permissões existentes
        $stmt = $conn->prepare("DELETE FROM permissoes_funis WHERE funil_id = ?");
        $stmt->bind_param("i", $funil_id_var);
        $stmt->execute();
        $stmt->close();

        // Inserir novas permissões
        if (!empty($_POST['permissoes'])) {
            $stmt = $conn->prepare("INSERT INTO permissoes_funis (funil_id, usuario_id, visualizar, editar, gerenciar) VALUES (?, ?, ?, ?, ?)");
            
            foreach ($_POST['permissoes'] as $usuario_permissao_id => $permissoes) {
                $usuario_permissao_id_var = $usuario_permissao_id;
                $visualizar = isset($permissoes['visualizar']) ? 1 : 0;
                $editar = isset($permissoes['editar']) ? 1 : 0;
                $gerenciar = isset($permissoes['gerenciar']) ? 1 : 0;
                
                if ($visualizar || $editar || $gerenciar) {
                    $stmt->bind_param("iiiii", $funil_id_var, $usuario_permissao_id_var, $visualizar, $editar, $gerenciar);
                    $stmt->execute();
                }
            }
            $stmt->close();
        }

        $conn->commit();
        $_SESSION['mensagem'] = "Permissões atualizadas com sucesso!";
    } catch (Exception $e) {
        $conn->rollback();
        $_SESSION['erro'] = "Erro ao salvar permissões: " . $e->getMessage();
    }
    header("Location: funis.php?funil=$funil_id");
    exit;
}

// Criar novo funil
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['criar_funil'])) {
    $token = $_POST['csrf_token'] ?? '';
    if (!isset($_POST['csrf_token']) || $token !== $_SESSION['csrf_token']) {
        $_SESSION['erro'] = "Token de segurança inválido!";
        header("Location: funis.php");
        exit;
    }

    $nome_funil = trim($_POST['nome_funil']);
    $nome_funil_var = $nome_funil;
    $etapas = $_POST['etapas'] ?? [];
    $tipos_entrada = $_POST['tipos_entrada'] ?? [];
    $questionarios_ids = $_POST['questionarios_ids'] ?? [];

    if (empty($nome_funil)) {
        $_SESSION['erro'] = "O nome do funil é obrigatório.";
    } elseif (empty($etapas) || count(array_filter($etapas, fn($e) => trim($e) !== '')) === 0) {
        $_SESSION['erro'] = "Adicione pelo menos uma etapa válida.";
    } else {
        $conn->begin_transaction();
        try {
            // Insere o novo funil
            $stmt = $conn->prepare("INSERT INTO funis (tenant_id, nome, ativo, data_criacao) VALUES (?, ?, TRUE, NOW())");
            $tenant_id_var = $tenant_id;
            $stmt->bind_param("is", $tenant_id_var, $nome_funil_var);
            $stmt->execute();
            $funil_id = $conn->insert_id;
            $stmt->close();

            // Insere as etapas
            $stmt = $conn->prepare("INSERT INTO etapas_funis (funil_id, nome, ordem, tipo_entrada, questionario_id) VALUES (?, ?, ?, ?, ?)");
            foreach ($etapas as $ordem => $nome_etapa) {
                $nome_etapa = trim($nome_etapa);
                if ($nome_etapa === '') continue;
                
                $nome_etapa_var = $nome_etapa;
                $ordem_var = $ordem + 1;
                $tipo_entrada_var = $tipos_entrada[$ordem] ?? 'manual';
                $questionario_id_var = ($tipo_entrada_var === 'questionario' && isset($questionarios_ids[$ordem])) ? intval($questionarios_ids[$ordem]) : null;
                
                $stmt->bind_param("isisi", $funil_id, $nome_etapa_var, $ordem_var, $tipo_entrada_var, $questionario_id_var);
                $stmt->execute();
            }
            $stmt->close();

            // Por padrão, o criador tem todas as permissões
            $stmt = $conn->prepare("INSERT INTO permissoes_funis (funil_id, usuario_id, visualizar, editar, gerenciar) VALUES (?, ?, 1, 1, 1)");
            $usuario_id_var = $usuario_id;
            $stmt->bind_param("ii", $funil_id, $usuario_id_var);
            $stmt->execute();
            $stmt->close();

            $conn->commit();
            $_SESSION['mensagem'] = "Funil criado e ativado com sucesso!";
            header("Location: funis.php?funil=$funil_id");
            exit;
        } catch (Exception $e) {
            $conn->rollback();
            $_SESSION['erro'] = "Erro ao criar funil: " . $e->getMessage();
        }
    }
}

// ========== CONSULTAS ========== //

// Obter formulários disponíveis (que serão usados como questionários) - APENAS DO TIPO QUESTIONÁRIO
$questionarios = [];
$stmt_questionarios = $conn->prepare("SELECT id, nome FROM formularios WHERE tenant_id = ? AND tipo = 'questionario' ORDER BY nome ASC");
$tenant_id_var = $tenant_id;
$stmt_questionarios->bind_param("i", $tenant_id_var);
$stmt_questionarios->execute();
$result_questionarios = $stmt_questionarios->get_result();
while ($row = $result_questionarios->fetch_assoc()) {
    $questionarios[$row['id']] = $row;
}
$stmt_questionarios->close();

// Obter funis que o usuário pode visualizar
$funis = [];
if ($is_admin) {
    $stmt = $conn->prepare("SELECT * FROM funis WHERE tenant_id = ? ORDER BY ativo DESC, nome ASC");
    $tenant_id_var = $tenant_id;
    $stmt->bind_param("i", $tenant_id_var);
} else {
    $stmt = $conn->prepare("SELECT f.* FROM funis f 
                          JOIN permissoes_funis pf ON f.id = pf.funil_id 
                          WHERE f.tenant_id = ? AND pf.usuario_id = ? AND pf.visualizar = 1
                          ORDER BY f.ativo DESC, f.nome ASC");
    $tenant_id_var = $tenant_id;
    $usuario_id_var = $usuario_id;
   $stmt->bind_param("ii", $tenant_id_var, $usuario_id);
}
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    $funis[$row['id']] = $row;
}
$stmt->close();

// Obter etapas de cada funil
foreach ($funis as $id => $funil) {
    $etapas = [];
    $stmt = $conn->prepare("SELECT e.*, f.nome as questionario_nome FROM etapas_funis e LEFT JOIN formularios f ON e.questionario_id = f.id WHERE e.funil_id = ? ORDER BY ordem ASC");
    $id_var = $id;
    $stmt->bind_param("i", $id_var);
    $stmt->execute();
    $res_etapas = $stmt->get_result();
    while ($row = $res_etapas->fetch_assoc()) {
        $etapas[] = $row;
    }
    $funis[$id]['etapas'] = $etapas;
    $stmt->close();
}

// ATUALIZADO: Obter contagem de clientes por funil - SEMPRE BUSCAR DADOS ATUALIZADOS
$clientes_por_funil = obterContagemClientesPorFunil($conn, $tenant_id);

// Obter usuários do tenant para gerenciamento de permissões
$usuarios_tenant = [];
$stmt = $conn->prepare("SELECT id, nome, email FROM usuarios WHERE tenant_id = ? AND id != ? ORDER BY nome ASC");
    $tenant_id_var = $tenant_id;
    $usuario_id_var = $usuario_id;
    $stmt->bind_param("ii", $tenant_id_var, $usuario_id_var);
    $stmt->execute();
    $result = $stmt->get_result();
    while ($row = $result->fetch_assoc()) {
        $usuarios_tenant[$row['id']] = $row;
    }
$stmt->close();

// Obter permissões se estiver visualizando um funil específico
$permissoes_funil = [];
$funil_selecionado = null;
if (isset($_GET['funil'])) {
    $funil_id = intval($_GET['funil']);
    $funil_id_var = $funil_id;
    
    if (isset($funis[$funil_id])) {
        $funil_selecionado = $funis[$funil_id];
        
        // Obter permissões deste funil
        $stmt = $conn->prepare("SELECT * FROM permissoes_funis WHERE funil_id = ?");
        $stmt->bind_param("i", $funil_id_var);
        $stmt->execute();
        $result = $stmt->get_result();
        while ($row = $result->fetch_assoc()) {
            $permissoes_funil[$row['usuario_id']] = $row;
        }
        $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>SON - Gerenciar Funis</title>
    <meta name="csrf-token" content="<?php echo $_SESSION['csrf_token']; ?>">
    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Expires" content="0">
    <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;
            overflow-x: hidden;
        }
        
        .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-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;
        }
        
        .submenu-sidebar {
            max-height: 0;
            overflow: hidden;
            transition: max-height 0.3s ease;
            background-color: #f9f9f9;
        }
        
        .submenu-sidebar a {
            padding-left: 50px;
            font-size: 0.9em;
        }
        
        .menu-item-sidebar {
            position: relative;
        }
        
        .menu-item-sidebar > a:after {
            content: "▶";
            margin-left: auto;
            font-size: 0.8em;
            transition: transform 0.3s;
        }
        
        .content-wrapper {
            margin-top: 20px;
            padding: 20px;
            margin-left: 60px; /* Espaço para o menu recolhido */
            transition: margin-left 0.3s ease;
        }
        
        .container {
            max-width: 1200px;
            margin: 0 auto;
            padding: 20px;
            background: white;
            border-radius: 8px;
            box-shadow: 0 0 10px rgba(0,0,0,0.1);
        }
        
        h1 {
            color: #333;
            border-bottom: 1px solid #eee;
            padding-bottom: 10px;
            display: flex;
            align-items: center;
            gap: 10px;
        }
        
        .funil-list {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
            gap: 20px;
            margin-top: 20px;
        }
        
        .funil-item {
            border: 1px solid #ddd;
            padding: 15px;
            border-radius: 5px;
            background: #fff;
            position: relative;
        }
        
        .funil-ativo {
            border-left: 4px solid #2ecc71;
        }
        
        .funil-inativo {
            border-left: 4px solid #e74c3c;
        }
        
        .etapa {
            padding: 8px 12px;
            margin: 5px 0;
            background: #f5f5f5;
            border-radius: 3px;
            font-size: 14px;
        }
        
        .btn {
            padding: 8px 16px;
            margin-right: 5px;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            font-size: 14px;
            text-decoration: none;
            display: inline-block;
            transition: background-color 0.3s;
        }
        
        .btn-primary {
            background: #3498db;
            color: white;
        }
        
        .btn-primary:hover {
            background: #2980b9;
        }
        
        .btn-success {
            background: #2ecc71;
            color: white;
        }
        
        .btn-success:hover {
            background: #27ae60;
        }
        
        .btn-danger {
            background: #e74c3c;
            color: white;
        }
        
        .btn-danger:hover {
            background: #c0392b;
        }

        .btn-warning {
            background: #f39c12;
            color: white;
        }
        
        .btn-warning:hover {
            background: #e67e22;
        }
        
        .form-group {
            margin-bottom: 15px;
        }
        
        .form-group label {
            display: block;
            margin-bottom: 5px;
            font-weight: bold;
        }
        
        .form-group input {
            width: 100%;
            padding: 10px;
            border: 1px solid #ddd;
            border-radius: 4px;
            font-size: 16px;
        }
        
        #etapas-container {
            margin-top: 10px;
        }
        
        .etapa-input {
            display: flex;
            margin-bottom: 10px;
            gap: 10px;
        }
        
        .etapa-input input {
            flex-grow: 1;
            padding: 8px;
            border: 1px solid #ddd;
            border-radius: 4px;
        }
        
        .etapa-input select {
            padding: 8px;
            border: 1px solid #ddd;
            border-radius: 4px;
            width: 150px;
        }
        
        .questionario-select {
            width: 200px;
            display: none;
        }
        
        .funil-acoes {
            margin-top: 15px;
            display: flex;
            justify-content: flex-end;
            flex-wrap: wrap;
            gap: 5px;
        }
        
        .funil-status {
            position: absolute;
            top: 10px;
            right: 10px;
            font-size: 12px;
            font-weight: bold;
            padding: 3px 8px;
            border-radius: 3px;
        }
        
        .status-ativo {
            background: #d4edda;
            color: #155724;
        }
        
        .status-inativo {
            background: #f8d7da;
            color: #721c24;
        }
        
        .etapas-container {
            margin-top: 15px;
        }
        
        .etapa-item {
            display: flex;
            align-items: center;
            margin-bottom: 8px;
        }
        
        .etapa-ordem {
            background: #3498db;
            color: white;
            border-radius: 50%;
            width: 24px;
            height: 24px;
            display: flex;
            align-items: center;
            justify-content: center;
            margin-right: 10px;
            font-size: 12px;
        }
        
        .etapa-tipo {
            margin-left: 10px;
            padding: 2px 6px;
            border-radius: 3px;
            font-size: 11px;
            font-weight: bold;
        }
        
        .tipo-manual {
            background: #e8f4fd;
            color: #2980b9;
        }
        
        .tipo-agendamento {
            background: #fef5e7;
            color: #e67e22;
        }
        
        .tipo-questionario {
            background: #f3e8fd;
            color: #8e44ad;
        }
        
        .questionario-info {
            margin-left: 10px;
            font-size: 10px;
            color: #666;
            font-style: italic;
        }
        
        .required:after {
            content: " *";
            color: red;
        }

        .clientes-count {
            position: center;
            top: 10px;
            left: 10px;
            background: #ffffff;
            color: black;
            border-radius: 50%;
            width: 24px;
            height: 24px;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 11px;
            font-weight: bold;
        }
        
        /* Modal de alteração de senha */
        .modal-senha {
            display: none;
            position: fixed;
            z-index: 2000;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            background-color: rgba(0,0,0,0.5);
        }
        
        .modal-senha-content {
            background-color: #fefefe;
            margin: 15% auto;
            padding: 20px;
            border-radius: 8px;
            width: 40%;
            max-width: 500px;
            box-shadow: 0 4px 8px rgba(0,0,0,0.2);
        }
        
        /* Modal de Permissões */
        .modal-permissoes {
            display: none;
            position: fixed;
            z-index: 2000;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            background-color: rgba(0,0,0,0.5);
        }
        
        .modal-permissoes-content {
            background-color: #fefefe;
            margin: 5% auto;
            padding: 20px;
            border-radius: 8px;
            width: 80%;
            max-width: 800px;
            max-height: 80vh;
            overflow-y: auto;
            box-shadow: 0 4px 8px rgba(0,0,0,0.2);
        }
        
        .permissoes-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
            gap: 15px;
            margin-top: 15px;
        }
        
        .permissao-item {
            border: 1px solid #ddd;
            padding: 15px;
            border-radius: 5px;
            background: #f9f9f9;
        }
        
        .permissao-nome {
            font-weight: bold;
            margin-bottom: 10px;
            border-bottom: 1px solid #eee;
            padding-bottom: 5px;
        }
        
        .permissao-opcoes label {
            display: flex;
            align-items: center;
            margin-bottom: 8px;
            cursor: pointer;
        }
        
        .permissao-opcoes input[type="checkbox"] {
            margin-right: 8px;
        }
        
        .user-info {
            display: flex;
            align-items: center;
            gap: 10px;
        }
        
        .user-photo {
            width: 40px;
            height: 40px;
            border-radius: 50%;
        }
        
        .user-initial {
            width: 40px;
            height: 40px;
            border-radius: 50%;
            background: #ccc;
            display: flex;
            align-items: center;
            justify-content: center;
            font-weight: bold;
            font-size: 1.2em;
        }
        
        /* Alertas */
        .alert {
            padding: 15px;
            margin-bottom: 20px;
            border-radius: 4px;
        }
        
        .alert-success {
            background-color: #d4edda;
            color: #155724;
            border: 1px solid #c3e6cb;
        }
        
        .alert-danger {
            background-color: #f8d7da;
            color: #721c24;
            border: 1px solid #f5c6cb;
        }
        
        /* 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;
        }
        
        /* Estilos para melhorar a responsividade */
        @media (max-width: 768px) {
            .content-wrapper {
                margin-left: 0;
            }
            
            .funil-list {
                grid-template-columns: 1fr;
            }
            
            .funil-acoes {
                flex-direction: column;
                align-items: flex-end;
            }
            
            .funil-acoes .btn {
                margin-bottom: 5px;
                width: 100%;
                text-align: center;
            }
            
            .etapa-input {
                flex-direction: column;
            }
            
            .etapa-input select {
                width: 100%;
            }
        }
    </style>
</head>
<body>

    <!-- Menu Lateral -->
    <?php include 'menu_lateral.php'; ?>

    <!-- Conteúdo Principal -->
    <div class="content-wrapper">
        <div class="container">
            <h1><i class="fas fa-filter"></i> Gerenciar Funis</h1>

            <?php if (isset($_SESSION['mensagem'])): ?>
                <div class="alert alert-success"><?php echo $_SESSION['mensagem']; unset($_SESSION['mensagem']); ?></div>
            <?php endif; ?>
            
            <?php if (isset($_SESSION['erro'])): ?>
                <div class="alert alert-danger"><?php echo $_SESSION['erro']; unset($_SESSION['erro']); ?></div>
            <?php endif; ?>

            <!-- Formulário para criar novo funil -->
            <div style="margin-bottom: 30px; padding: 20px; border: 1px solid #ddd; border-radius: 5px;">
                <h2 style="margin-top: 0;">Criar Novo Funil</h2>
                <form method="POST" action="funis.php">
                    <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
                    
                    <div class="form-group">
                        <label for="nome_funil" class="required">Nome do Funil</label>
                        <input type="text" id="nome_funil" name="nome_funil" required>
                    </div>
                    
                    <div class="form-group">
                        <label class="required">Etapas do Funil</label>
                        <div id="etapas-container">
                            <div class="etapa-input">
                                <input type="text" name="etapas[]" placeholder="Nome da etapa" required>
                                <select name="tipos_entrada[]" class="tipo-entrada-select" onchange="toggleQuestionarioSelect(this)">
                                    <option value="manual">Manual</option>
                                    <option value="agendamento">Agendamento</option>
                                    <option value="questionario">Formulário</option>
                                </select>
                                <select name="questionarios_ids[]" class="questionario-select" style="display: none;">
                                    <option value="">Selecione um formulário</option>
                                    <?php foreach ($questionarios as $id => $questionario): ?>
                                        <option value="<?php echo $id; ?>"><?php echo htmlspecialchars($questionario['nome']); ?></option>
                                    <?php endforeach; ?>
                                </select>
                                <button type="button" class="btn btn-danger" onclick="removerEtapa(this)" disabled><i class="fas fa-times"></i></button>
                            </div>
                        </div>
                        <button type="button" class="btn btn-primary" onclick="adicionarEtapa()"><i class="fas fa-plus"></i> Adicionar Etapa</button>
                    </div>
                    
                    <button type="submit" name="criar_funil" class="btn btn-success"><i class="fas fa-plus"></i> Criar Funil</button>
                </form>
            </div>

            <!-- Lista de Funis -->
            <h2>Funis do Sistema</h2>
            
            <?php if (empty($funis)): ?>
                <p>Nenhum funil cadastrado ainda.</p>
            <?php else: ?>
                <div class="funil-list">
                    <?php foreach ($funis as $funil): ?>
                        <div class="funil-item <?php echo $funil['ativo'] ? 'funil-ativo' : 'funil-inativo'; ?>">
                            <?php 
                            // BUSCAR CONTAGEM ATUALIZADA PARA CADA FUNIL INDIVIDUALMENTE
                            $contagem_atual = obterContagemClientesPorFunil($conn, $tenant_id);
                            $clientes_count = $contagem_atual[$funil['id']] ?? 0;
                            ?>
                            
                            <?php if ($clientes_count > 0): ?>
                                <div class="clientes-count" title="<?php echo $clientes_count; ?> cliente(s) neste funil">
                                    <?php echo $clientes_count; ?>
                                </div>
                            <?php endif; ?>
                            
                            <div class="funil-status <?php echo $funil['ativo'] ? 'status-ativo' : 'status-inativo'; ?>">
                                <?php echo $funil['ativo'] ? 'ATIVO' : 'INATIVO'; ?>
                            </div>
                            
                            <h3><?php echo htmlspecialchars($funil['nome']); ?></h3>
                            <p><small>Criado em: <?php echo date('d/m/Y', strtotime($funil['data_criacao'])); ?></small></p>
                            
                            <div class="etapas-container">
                                <?php foreach ($funil['etapas'] as $index => $etapa): ?>
                                    <div class="etapa-item">
                                        <div class="etapa-ordem"><?php echo $index + 1; ?></div>
                                        <div style="flex-grow: 1;">
                                            <?php echo htmlspecialchars($etapa['nome']); ?>
                                            <?php if ($etapa['tipo_entrada'] !== 'manual'): ?>
                                                <span class="etapa-tipo tipo-<?php echo $etapa['tipo_entrada']; ?>">
                                                    <?php 
                                                    echo match($etapa['tipo_entrada']) {
                                                        'agendamento' => 'Agendamento',
                                                        'questionario' => 'Formulário',
                                                        default => 'Manual'
                                                    }; 
                                                    ?>
                                                </span>
                                                <?php if ($etapa['tipo_entrada'] === 'questionario' && !empty($etapa['questionario_nome'])): ?>
                                                    <span class="questionario-info">(<?php echo htmlspecialchars($etapa['questionario_nome']); ?>)</span>
                                                <?php endif; ?>
                                            <?php endif; ?>
                                        </div>
                                    </div>
                                <?php endforeach; ?>
                            </div>
                            
                            <div class="funil-acoes">
                                <?php if (usuarioPodeVisualizarFunil($conn, $usuario_id, $funil['id'])): ?>
                                    <a href="index.php?funil=<?php echo $funil['id']; ?>" class="btn btn-primary">
                                        <i class="fas fa-eye"></i> Visualizar
                                    </a>
                                <?php endif; ?>
                                
                                <?php if (usuarioPodeEditarFunil($conn, $usuario_id, $funil['id'])): ?>
                                    <a href="editar_funil.php?id=<?php echo $funil['id']; ?>" class="btn btn-primary">
                                        <i class="fas fa-edit"></i> Editar
                                    </a>
                                <?php endif; ?>
                                
                                <?php if (usuarioPodeGerenciarFunil($conn, $usuario_id, $funil['id'])): ?>
                                    <?php if ($funil['ativo']): ?>
                                        <a href="funis.php?desativar=<?php echo $funil['id']; ?>&csrf_token=<?php echo $_SESSION['csrf_token']; ?>" class="btn btn-warning">
                                            <i class="fas fa-pause"></i> Desativar
                                        </a>
                                    <?php else: ?>
                                        <a href="funis.php?ativar=<?php echo $funil['id']; ?>&csrf_token=<?php echo $_SESSION['csrf_token']; ?>" class="btn btn-success">
                                            <i class="fas fa-play"></i> Ativar
                                        </a>
                                    <?php endif; ?>
                                    
                                    <button type="button" class="btn btn-primary" onclick="abrirModalPermissoes(<?php echo $funil['id']; ?>, '<?php echo htmlspecialchars(addslashes($funil['nome'])); ?>')">
                                        <i class="fas fa-users"></i> Permissões
                                    </button>
                                    
                                    <?php 
                                    // VERIFICAÇÃO FINAL ATUALIZADA PARA EXCLUSÃO
                                    $tem_clientes_final = funilTemClientes($conn, $funil['id'], $tenant_id);
                                    ?>
                                    
                                    <?php if ($tem_clientes_final): ?>
                                        <button type="button" class="btn btn-danger" onclick="mostrarErroClientes(<?php echo $clientes_count; ?>)">
                                            <i class="fas fa-trash"></i> Excluir
                                        </button>
                                    <?php else: ?>
                                        <a href="funis.php?excluir=<?php echo $funil['id']; ?>&csrf_token=<?php echo $_SESSION['csrf_token']; ?>" class="btn btn-danger" onclick="return confirm('Tem certeza que deseja excluir este funil? Esta ação não pode ser desfeita.')">
                                            <i class="fas fa-trash"></i> Excluir
                                        </a>
                                    <?php endif; ?>
                                <?php endif; ?>
                            </div>
                        </div>
                    <?php endforeach; ?>
                </div>
            <?php endif; ?>
        </div>
    </div>

    <!-- Modal de Permissões -->
    <div id="modalPermissoes" class="modal-permissoes">
        <div class="modal-permissoes-content">
            <span style="float: right; cursor: pointer; font-size: 24px;" onclick="fecharModalPermissoes()">&times;</span>
            <h2 id="modalPermissoesTitulo">Gerenciar Permissões</h2>
            
            <form method="POST" action="funis.php">
                <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
                <input type="hidden" name="salvar_permissoes" value="1">
                <input type="hidden" id="funil_id" name="funil_id" value="">
                
                <div class="permissoes-grid" id="permissoesGrid">
                    <!-- As permissões serão carregadas aqui via JavaScript -->
                </div>
                
                <div style="text-align: right; margin-top: 20px;">
                    <button type="button" class="btn" onclick="fecharModalPermissoes()">Cancelar</button>
                    <button type="submit" class="btn btn-success">Salvar Permissões</button>
                </div>
            </form>
        </div>
    </div>

    <!-- Botão Fixo para Administração -->
    <?php if ($is_admin): ?>
        <div class="admin-fixed-btn" onclick="window.location.href='admin.php'">
            <i class="fas fa-cogs"></i>
            <div class="tooltip">Administração</div>
        </div>
    <?php endif; ?>

    <script>
        // Função para mostrar erro quando tentar excluir funil com clientes
        function mostrarErroClientes(quantidadeClientes) {
            Swal.fire({
                icon: 'error',
                title: 'Não é possível excluir',
                html: `Este funil possui <strong>${quantidadeClientes}</strong> cliente(s) vinculado(s).<br><br>Transfira os clientes para outro funil antes de excluir.`,
                confirmButtonText: 'Entendi',
                confirmButtonColor: '#e74c3c'
            });
        }

        // Gerenciamento de etapas no formulário
        function adicionarEtapa() {
            const container = document.getElementById('etapas-container');
            const etapaCount = container.children.length;
            
            const etapaDiv = document.createElement('div');
            etapaDiv.className = 'etapa-input';
            etapaDiv.innerHTML = `
                <input type="text" name="etapas[]" placeholder="Nome da etapa" required>
                <select name="tipos_entrada[]" class="tipo-entrada-select" onchange="toggleQuestionarioSelect(this)">
                    <option value="manual">Manual</option>
                    <option value="agendamento">Agendamento</option>
                    <option value="questionario">Formulário</option>
                </select>
                <select name="questionarios_ids[]" class="questionario-select" style="display: none;">
                    <option value="">Selecione um formulário</option>
                    <?php foreach ($questionarios as $id => $questionario): ?>
                        <option value="<?php echo $id; ?>"><?php echo htmlspecialchars($questionario['nome']); ?></option>
                    <?php endforeach; ?>
                </select>
                <button type="button" class="btn btn-danger" onclick="removerEtapa(this)"><i class="fas fa-times"></i></button>
            `;
            
            container.appendChild(etapaDiv);
            
            // Habilitar botões de remover se houver mais de uma etapa
            if (container.children.length > 1) {
                for (let i = 0; i < container.children.length; i++) {
                    container.children[i].querySelector('.btn-danger').disabled = false;
                }
            }
        }
        
        function removerEtapa(button) {
            const etapaDiv = button.closest('.etapa-input');
            const container = document.getElementById('etapas-container');
            
            if (container.children.length > 1) {
                etapaDiv.remove();
                
                // Desabilitar botão de remover se só restar uma etapa
                if (container.children.length === 1) {
                    container.children[0].querySelector('.btn-danger').disabled = true;
                }
            }
        }
        
        function toggleQuestionarioSelect(select) {
            const etapaDiv = select.closest('.etapa-input');
            const questionarioSelect = etapaDiv.querySelector('.questionario-select');
            
            if (select.value === 'questionario') {
                questionarioSelect.style.display = 'block';
                questionarioSelect.required = true;
            } else {
                questionarioSelect.style.display = 'none';
                questionarioSelect.required = false;
            }
        }
        
        // Modal de Permissões
        function abrirModalPermissoes(funilId, funilNome) {
            document.getElementById('modalPermissoesTitulo').textContent = `Permissões: ${funilNome}`;
            document.getElementById('funil_id').value = funilId;
            
            // Carregar permissões via AJAX
            carregarPermissoes(funilId);
            
            document.getElementById('modalPermissoes').style.display = 'block';
        }
        
        function fecharModalPermissoes() {
            document.getElementById('modalPermissoes').style.display = 'none';
        }
        
        function carregarPermissoes(funilId) {
            const grid = document.getElementById('permissoesGrid');
            grid.innerHTML = '<p>Carregando permissões...</p>';
            
            // Fazer uma requisição para obter os dados das permissões
            // Aqui você pode implementar uma chamada AJAX para buscar as permissões do servidor
            // Por enquanto, vou usar os dados disponíveis na página
            
            const usuarios = <?php echo json_encode($usuarios_tenant); ?>;
            const permissoes = <?php echo json_encode($permissoes_funil); ?>;
            
            let html = '';
            
            if (Object.keys(usuarios).length === 0) {
                html = '<p>Não há outros usuários no seu tenant para gerenciar permissões.</p>';
            } else {
                for (const usuarioId in usuarios) {
                    const usuario = usuarios[usuarioId];
                    const permissao = permissoes[usuarioId] || { visualizar: 0, editar: 0, gerenciar: 0 };
                    
                    html += `
                        <div class="permissao-item">
                            <div class="permissao-nome">
                                <div class="user-info">
                                    <div class="user-initial">
                                        ${usuario.nome ? usuario.nome.charAt(0).toUpperCase() : 'U'}
                                    </div>
                                    <div>
                                        <div>${usuario.nome || 'Usuário'}</div>
                                        <div style="font-size: 0.8em; color: #666;">${usuario.email || ''}</div>
                                    </div>
                                </div>
                            </div>
                            <div class="permissao-opcoes">
                                <label>
                                    <input type="checkbox" name="permissoes[${usuarioId}][visualizar]" value="1" ${permissao.visualizar ? 'checked' : ''}>
                                    Visualizar funil
                                </label>
                                <label>
                                    <input type="checkbox" name="permissoes[${usuarioId}][editar]" value="1" ${permissao.editar ? 'checked' : ''}>
                                    Editar funil
                                </label>
                                <label>
                                    <input type="checkbox" name="permissoes[${usuarioId}][gerenciar]" value="1" ${permissao.gerenciar ? 'checked' : ''}>
                                    Gerenciar funil
                                </label>
                            </div>
                        </div>
                    `;
                }
            }
            
            grid.innerHTML = html;
        }
        
        // Fechar modal ao clicar fora
        window.onclick = function(event) {
            const modal = document.getElementById('modalPermissoes');
            if (event.target === modal) {
                fecharModalPermissoes();
            }
        }
        
        // Inicialização
        document.addEventListener('DOMContentLoaded', function() {
            // Garantir que o botão de remover da primeira etapa esteja desabilitado
            const container = document.getElementById('etapas-container');
            if (container.children.length === 1) {
                container.children[0].querySelector('.btn-danger').disabled = true;
            }
        });
    </script>
</body>
</html>