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

// Verifica se o usuário está logado
if (!isset($_SESSION['usuario_id'])) {
    die(json_encode(['error' => 'Não autenticado']));
}

// Validação do ID do cliente
if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
    die(json_encode(['error' => 'ID inválido']));
}

$clienteId = (int)$_GET['id'];
$tenant_id = $_SESSION['tenant_id'] ?? null;
$usuario_id = $_SESSION['usuario_id'] ?? null;
$nome_usuario = $_SESSION['nome'] ?? 'Usuário';

if (!$tenant_id || !$usuario_id) {
    die(json_encode(['error' => 'Sessão inválida']));
}

// Se for uma requisição POST (marcar como perdido)
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['marcar_perdido'])) {
    header('Content-Type: application/json');
    
    $motivo = filter_input(INPUT_POST, 'motivo', FILTER_SANITIZE_STRING);
    $observacoes = filter_input(INPUT_POST, 'observacoes', FILTER_SANITIZE_STRING);
    
    if (empty($motivo)) {
        echo json_encode(['success' => false, 'error' => 'Motivo obrigatório']);
        exit;
    }
    
    // Iniciar transação
    $conn->begin_transaction();
    
    try {
        // VERIFICAÇÃO CRÍTICA: Verificar se cliente já está marcado como perdido (não restaurado)
        $sqlVerificaExistente = "SELECT id FROM clientes_perdidos 
                                WHERE cliente_id = ? AND tenant_id = ? AND restaurado = 0";
        $stmtVerificaExistente = $conn->prepare($sqlVerificaExistente);
        $stmtVerificaExistente->bind_param("ii", $clienteId, $tenant_id);
        $stmtVerificaExistente->execute();
        $resultVerificaExistente = $stmtVerificaExistente->get_result();
        
        if ($resultVerificaExistente->num_rows > 0) {
            throw new Exception("Este cliente já está marcado como perdido e não restaurado.");
        }
        $stmtVerificaExistente->close();
        
        // 1. Buscar funil e etapa atuais do cliente
        $sqlBuscarFunilAtual = "SELECT funil_id, etapa_funil_id, Funil FROM clientes WHERE id = ? AND tenant_id = ?";
        $stmtBuscarFunil = $conn->prepare($sqlBuscarFunilAtual);
        $stmtBuscarFunil->bind_param("ii", $clienteId, $tenant_id);
        $stmtBuscarFunil->execute();
        $resultBuscarFunil = $stmtBuscarFunil->get_result();
        
        if ($resultBuscarFunil->num_rows === 0) {
            throw new Exception("Cliente não encontrado.");
        }
        
        $clienteFunil = $resultBuscarFunil->fetch_assoc();
        $funil_id_original = $clienteFunil['funil_id'];
        $etapa_funil_id_original = $clienteFunil['etapa_funil_id'];
        $funil_original = $clienteFunil['Funil'];
        $stmtBuscarFunil->close();
        
        // 2. Inserir na tabela clientes_perdidos com os dados originais do funil
        $sqlPerdido = "INSERT INTO clientes_perdidos 
                      (cliente_id, tenant_id, usuario_id, nome_usuario, motivo, observacoes, 
                       data_perdido, restaurado, funil_id_original, etapa_funil_id_original) 
                      VALUES (?, ?, ?, ?, ?, ?, NOW(), 0, ?, ?)";
        
        $stmtPerdido = $conn->prepare($sqlPerdido);
        if (!$stmtPerdido) {
            throw new Exception("Erro ao preparar inserção: " . $conn->error);
        }
        
        $stmtPerdido->bind_param("iiisssii", 
            $clienteId, $tenant_id, $usuario_id, $nome_usuario, 
            $motivo, $observacoes, $funil_id_original, $etapa_funil_id_original
        );
        
        if (!$stmtPerdido->execute()) {
            throw new Exception("Erro ao executar inserção: " . $stmtPerdido->error);
        }
        $perdido_id = $stmtPerdido->insert_id;
        $stmtPerdido->close();
        
        // 3. Atualizar cliente: marcar como inativo e LIMPAR dados do funil
        $sqlUpdateCliente = "UPDATE clientes 
                            SET status = 0, 
                                funil_id = NULL, 
                                etapa_funil_id = NULL,
                                atualizado_em = NOW() 
                            WHERE id = ? AND tenant_id = ?";
        $stmtUpdate = $conn->prepare($sqlUpdateCliente);
        if (!$stmtUpdate) {
            throw new Exception("Erro ao preparar atualização: " . $conn->error);
        }
        
        $stmtUpdate->bind_param("ii", $clienteId, $tenant_id);
        if (!$stmtUpdate->execute()) {
            throw new Exception("Erro ao atualizar cliente: " . $stmtUpdate->error);
        }
        $stmtUpdate->close();
        
        // 4. INSERIR LOG NA TABELA cliente_logs
        $sqlLog = "INSERT INTO cliente_logs 
                  (cliente_id, usuario_id, nome_usuario, acao, detalhes, tenant_id, observacao_id) 
                  VALUES (?, ?, ?, 'Cliente marcado como perdido', ?, ?, ?)";
        
        $stmtLog = $conn->prepare($sqlLog);
        if (!$stmtLog) {
            throw new Exception("Erro ao preparar log: " . $conn->error);
        }
        
        $detalhes = "Cliente marcado como perdido e removido do funil. Motivo: " . $motivo;
        if (!empty($observacoes)) {
            $detalhes .= ". Observações: " . $observacoes;
        }
        $detalhes .= ". Funil original: " . ($funil_id_original ? "ID {$funil_id_original}" : "Funil {$funil_original}");
        
        $stmtLog->bind_param("iissii", 
            $clienteId, 
            $usuario_id, 
            $nome_usuario, 
            $detalhes, 
            $tenant_id, 
            $perdido_id
        );
        
        if (!$stmtLog->execute()) {
            throw new Exception("Erro ao salvar log: " . $stmtLog->error);
        }
        $stmtLog->close();
        
        // Commit da transação
        $conn->commit();
        
        echo json_encode([
            'success' => true,
            'message' => 'Cliente marcado como perdido com sucesso! Removido do funil.',
            'redirect' => 'index.php'
        ]);
        exit;
        
    } catch (Exception $e) {
        // Rollback em caso de erro
        $conn->rollback();
        error_log("Erro ao marcar cliente como perdido: " . $e->getMessage());
        echo json_encode(['success' => false, 'error' => 'Operação falhou: ' . $e->getMessage()]);
        exit;
    }
}

// Se for uma requisição POST para trocar funil
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['trocar_funil'])) {
    header('Content-Type: application/json');
    
    $novo_funil_id = filter_input(INPUT_POST, 'novo_funil_id', FILTER_VALIDATE_INT);
    $nova_etapa_id = filter_input(INPUT_POST, 'nova_etapa_id', FILTER_VALIDATE_INT);
    
    if (!$novo_funil_id || !$nova_etapa_id) {
        echo json_encode(['success' => false, 'error' => 'Dados inválidos']);
        exit;
    }
    
    try {
        // Buscar informações do cliente atual
        $sqlCliente = "SELECT funil_id, etapa_funil_id, Funil FROM clientes WHERE id = ? AND tenant_id = ?";
        $stmtCliente = $conn->prepare($sqlCliente);
        $stmtCliente->bind_param("ii", $clienteId, $tenant_id);
        $stmtCliente->execute();
        $resultCliente = $stmtCliente->get_result();
        
        if ($resultCliente->num_rows === 0) {
            throw new Exception("Cliente não encontrado");
        }
        
        $clienteAtual = $resultCliente->fetch_assoc();
        
        // CORREÇÃO: Usar a coluna Funil quando funil_id for NULL
        $funil_atual_id = $clienteAtual['funil_id'];
        $funil_atual_valor = $clienteAtual['Funil'];
        
        // Se funil_id for NULL, usar o valor da coluna Funil
        if ($funil_atual_id === null) {
            // Buscar funil padrão baseado no valor da coluna Funil
            $sqlFunilPadrao = "SELECT id, nome FROM funis WHERE padrao = 1 AND tenant_id = ? LIMIT 1";
            $stmtFunilPadrao = $conn->prepare($sqlFunilPadrao);
            $stmtFunilPadrao->bind_param("i", $tenant_id);
            $stmtFunilPadrao->execute();
            $resultFunilPadrao = $stmtFunilPadrao->get_result();
            
            if ($resultFunilPadrao->num_rows > 0) {
                $funilPadrao = $resultFunilPadrao->fetch_assoc();
                $funil_atual_id = $funilPadrao['id'];
                $funil_atual_nome = $funilPadrao['nome'];
            } else {
                $funil_atual_nome = 'Funil ' . $funil_atual_valor;
            }
        } else {
            // Buscar nome do funil atual
            $sqlFunilAtual = "SELECT nome FROM funis WHERE id = ?";
            $stmtFunilAtual = $conn->prepare($sqlFunilAtual);
            $stmtFunilAtual->bind_param("i", $funil_atual_id);
            $stmtFunilAtual->execute();
            $resultFunilAtual = $stmtFunilAtual->get_result();
            $funil_atual_nome = $resultFunilAtual->num_rows > 0 ? $resultFunilAtual->fetch_assoc()['nome'] : 'Desconhecido';
        }
        
        $etapa_atual_id = $clienteAtual['etapa_funil_id'];
        
        // Buscar nome do novo funil
        $sqlNovoFunil = "SELECT nome FROM funis WHERE id = ? AND tenant_id = ?";
        $stmtNovoFunil = $conn->prepare($sqlNovoFunil);
        $stmtNovoFunil->bind_param("ii", $novo_funil_id, $tenant_id);
        $stmtNovoFunil->execute();
        $resultNovoFunil = $stmtNovoFunil->get_result();
        
        if ($resultNovoFunil->num_rows === 0) {
            throw new Exception("Funil não encontrado");
        }
        
        $novo_funil_nome = $resultNovoFunil->fetch_assoc()['nome'];
        
        // Buscar nome da nova etapa
        $sqlNovaEtapa = "SELECT nome FROM etapas_funis WHERE id = ? AND funil_id = ?";
        $stmtNovaEtapa = $conn->prepare($sqlNovaEtapa);
        $stmtNovaEtapa->bind_param("ii", $nova_etapa_id, $novo_funil_id);
        $stmtNovaEtapa->execute();
        $resultNovaEtapa = $stmtNovaEtapa->get_result();
        
        if ($resultNovaEtapa->num_rows === 0) {
            throw new Exception("Etapa não encontrada");
        }
        
        $nova_etapa_nome = $resultNovaEtapa->fetch_assoc()['nome'];
        
        // Buscar nome da etapa atual
        $etapa_atual_nome = 'Não definida';
        if ($etapa_atual_id) {
            $sqlEtapaAtual = "SELECT nome FROM etapas_funis WHERE id = ?";
            $stmtEtapaAtual = $conn->prepare($sqlEtapaAtual);
            $stmtEtapaAtual->bind_param("i", $etapa_atual_id);
            $stmtEtapaAtual->execute();
            $resultEtapaAtual = $stmtEtapaAtual->get_result();
            if ($resultEtapaAtual->num_rows > 0) {
                $etapa_atual_nome = $resultEtapaAtual->fetch_assoc()['nome'];
            }
        }
        
        // Atualizar o cliente com o novo funil e etapa
        $sqlUpdate = "UPDATE clientes SET funil_id = ?, etapa_funil_id = ?, atualizado_em = NOW() 
                     WHERE id = ? AND tenant_id = ?";
        $stmtUpdate = $conn->prepare($sqlUpdate);
        $stmtUpdate->bind_param("iiii", $novo_funil_id, $nova_etapa_id, $clienteId, $tenant_id);
        
        if (!$stmtUpdate->execute()) {
            throw new Exception("Erro ao atualizar cliente: " . $stmtUpdate->error);
        }
        
        // Inserir log da mudança
        $sqlLog = "INSERT INTO cliente_logs 
                  (cliente_id, usuario_id, nome_usuario, acao, detalhes, tenant_id) 
                  VALUES (?, ?, ?, 'Troca de funil', ?, ?)";
        
        $stmtLog = $conn->prepare($sqlLog);
        $detalhes = sprintf(
            "Cliente movido do funil '%s' (etapa: '%s') para o funil '%s' (etapa: '%s')",
            $funil_atual_nome,
            $etapa_atual_nome,
            $novo_funil_nome,
            $nova_etapa_nome
        );
        
        $stmtLog->bind_param("iissi", $clienteId, $usuario_id, $nome_usuario, $detalhes, $tenant_id);
        $stmtLog->execute();
        
        echo json_encode([
            'success' => true,
            'message' => 'Funil atualizado com sucesso!',
            'redirect' => 'index.php'
        ]);
        exit;
        
    } catch (Exception $e) {
        echo json_encode(['success' => false, 'error' => $e->getMessage()]);
        exit;
    }
}

// ========== BUSCAR LOGS DO CLIENTE (MESMA FUNCIONALIDADE DO editar_cliente.php) ==========
// CORREÇÃO APLICADA: Buscar logs com nomes CORRETAMENTE
$sqlLogs = "
    SELECT 
        l.*, 
        u.nome AS nome_usuario
    FROM cliente_logs l
    LEFT JOIN usuarios u ON l.usuario_id = u.id
    WHERE l.cliente_id = ? AND l.tenant_id = ?
    ORDER BY l.id DESC
    LIMIT 10
";
$stmtLogs = $conn->prepare($sqlLogs);
$stmtLogs->bind_param("ii", $clienteId, $tenant_id);
$stmtLogs->execute();
$resultadoLogs = $stmtLogs->get_result();
$logs = $resultadoLogs->fetch_all(MYSQLI_ASSOC);
$stmtLogs->close();

// Processar logs para converter IDs em nomes (mesmo processamento do editar_cliente.php)
foreach ($logs as &$log) {
    if ($log['acao'] == 'atualizacao_campo') {
        $linhas = explode("\n", $log['detalhes']);
        $novoDetalhes = '';
        
        foreach ($linhas as $linha) {
            if (strpos($linha, 'Campo: responsavel') !== false) {
                // Extrair valores da linha
                $partes = explode("\n", $log['detalhes']);
                $valorAnterior = '';
                $novoValor = '';
                
                foreach ($partes as $parte) {
                    if (strpos($parte, 'Valor anterior: ') !== false) {
                        $valorAnterior = trim(str_replace('Valor anterior: ', '', $parte));
                        // Extrair apenas o email/nome do formato (ID: - email/nome (ID: X))
                        if (preg_match('/\(ID:\s*-\s*([^\(]+)/', $valorAnterior, $matches)) {
                            $valorAnterior = trim($matches[1]);
                        } elseif (preg_match('/\(ID:\s*(\d+)\)/', $valorAnterior, $matches)) {
                            // Se for apenas ID numérico, buscar o nome
                            $valorAnterior = $matches[1];
                        }
                    }
                    if (strpos($parte, 'Novo valor: ') !== false) {
                        $novoValor = trim(str_replace('Novo valor: ', '', $parte));
                        // Extrair apenas o email/nome do formato (ID: - email/nome (ID: X))
                        if (preg_match('/\(ID:\s*-\s*([^\(]+)/', $novoValor, $matches)) {
                            $novoValor = trim($matches[1]);
                        } elseif (preg_match('/\(ID:\s*(\d+)\)/', $novoValor, $matches)) {
                            // Se for apenas ID numérico, buscar o nome
                            $novoValor = $matches[1];
                        }
                    }
                }
                
                // Buscar nomes dos responsáveis
                $nomeAnterior = '';
                $nomeNovo = '';
                
                if (!empty($valorAnterior)) {
                    // Se $valorAnterior for numérico, buscar nome do usuário
                    if (is_numeric($valorAnterior)) {
                        $stmt = $conn->prepare("SELECT nome FROM usuarios WHERE id = ?");
                        $stmt->bind_param("i", $valorAnterior);
                        $stmt->execute();
                        $result = $stmt->get_result();
                        if ($row = $result->fetch_assoc()) {
                            $nomeAnterior = $row['nome'];
                        }
                        $stmt->close();
                    } else {
                        // Já tem o email/nome extraído
                        $nomeAnterior = $valorAnterior;
                    }
                }
                
                if (!empty($novoValor)) {
                    // Se $novoValor for numérico, buscar nome do usuário
                    if (is_numeric($novoValor)) {
                        $stmt = $conn->prepare("SELECT nome FROM usuarios WHERE id = ?");
                        $stmt->bind_param("i", $novoValor);
                        $stmt->execute();
                        $result = $stmt->get_result();
                        if ($row = $result->fetch_assoc()) {
                            $nomeNovo = $row['nome'];
                        }
                        $stmt->close();
                    } else {
                        // Já tem o email/nome extraído
                        $nomeNovo = $novoValor;
                    }
                }
                
                $novoDetalhes = "Campo atualizado:\n";
                $novoDetalhes .= "- Campo: responsavel\n";
                $novoDetalhes .= "- Valor anterior: " . $nomeAnterior . "\n";
                $novoDetalhes .= "- Novo valor: " . $nomeNovo;
                
                break; // Sair do loop de linhas
                
            } elseif (strpos($linha, 'Campo: Origem') !== false) {
                // Extrair valores da linha
                $partes = explode("\n", $log['detalhes']);
                $valorAnterior = '';
                $novoValor = '';
                
                foreach ($partes as $parte) {
                    if (strpos($parte, 'Valor anterior: ') !== false) {
                        $valorAnterior = trim(str_replace('Valor anterior: ', '', $parte));
                        // Extrair apenas o ID numérico do formato (ID: X)
                        if (preg_match('/\(ID:\s*(\d+)\)/', $valorAnterior, $matches)) {
                            $valorAnterior = $matches[1];
                        }
                    }
                    if (strpos($parte, 'Novo valor: ') !== false) {
                        $novoValor = trim(str_replace('Novo valor: ', '', $parte));
                        // Extrair apenas o ID numérico do formato (ID: X)
                        if (preg_match('/\(ID:\s*(\d+)\)/', $novoValor, $matches)) {
                            $novoValor = $matches[1];
                        }
                    }
                }
                
                // Buscar nomes das origens
                $nomeAnterior = '';
                $nomeNovo = '';
                
                if (!empty($valorAnterior) && is_numeric($valorAnterior)) {
                    $stmt = $conn->prepare("SELECT nome FROM origens WHERE id = ?");
                    $stmt->bind_param("i", $valorAnterior);
                    $stmt->execute();
                    $result = $stmt->get_result();
                    if ($row = $result->fetch_assoc()) {
                        $nomeAnterior = $row['nome'];
                    }
                    $stmt->close();
                }
                
                if (!empty($novoValor) && is_numeric($novoValor)) {
                    $stmt = $conn->prepare("SELECT nome FROM origens WHERE id = ?");
                    $stmt->bind_param("i", $novoValor);
                    $stmt->execute();
                    $result = $stmt->get_result();
                    if ($row = $result->fetch_assoc()) {
                        $nomeNovo = $row['nome'];
                    }
                    $stmt->close();
                }
                
                $novoDetalhes = "Campo atualizado:\n";
                $novoDetalhes .= "- Campo: Origem\n";
                $novoDetalhes .= "- Valor anterior: " . $nomeAnterior . "\n";
                $novoDetalhes .= "- Novo valor: " . $nomeNovo;
                
                break; // Sair do loop de linhas
            }
        }
        
        if (!empty($novoDetalhes)) {
            $log['detalhes'] = $novoDetalhes;
        }
    }
}
unset($log); // Quebrar a referência

// Se for uma requisição GET normal, mostrar o HTML
header('Content-Type: text/html; charset=utf-8');

// Consulta os dados do cliente
$sql = "SELECT * FROM clientes WHERE id = ? AND tenant_id = ?";
$stmt = $conn->prepare($sql);
if (!$stmt) {
    die("Erro ao preparar consulta");
}
$stmt->bind_param("ii", $clienteId, $tenant_id);
$stmt->execute();
$resultado = $stmt->get_result();

if ($resultado->num_rows === 0) {
    die("Cliente não encontrado");
}

$cliente = $resultado->fetch_assoc();
$stmt->close();

// Verificar se cliente já está marcado como perdido (não restaurado)
$sqlVerificaPerdido = "SELECT COUNT(*) as total FROM clientes_perdidos 
                      WHERE cliente_id = ? AND tenant_id = ? AND restaurado = 0";
$stmtVerifica = $conn->prepare($sqlVerificaPerdido);
$clientePerdido = false;
if ($stmtVerifica) {
    $stmtVerifica->bind_param("ii", $clienteId, $tenant_id);
    $stmtVerifica->execute();
    $resultadoVerifica = $stmtVerifica->get_result();
    $verificacao = $resultadoVerifica->fetch_assoc();
    $clientePerdido = ($verificacao['total'] > 0);
    $stmtVerifica->close();
}

// Buscar funil atual do cliente - CORREÇÃO: Considerar a coluna Funil quando funil_id for NULL
$sqlFunilAtual = "SELECT 
                    COALESCE(c.funil_id, f.id) as funil_id,
                    COALESCE(f.nome, CONCAT('Funil ', c.Funil)) as funil_nome,
                    c.etapa_funil_id as etapa_id,
                    ef.nome as etapa_nome
                  FROM clientes c
                  LEFT JOIN funis f ON (c.funil_id = f.id OR (c.funil_id IS NULL AND f.padrao = 1 AND f.tenant_id = ?))
                  LEFT JOIN etapas_funis ef ON c.etapa_funil_id = ef.id
                  WHERE c.id = ? AND c.tenant_id = ?
                  LIMIT 1";

$stmtFunilAtual = $conn->prepare($sqlFunilAtual);
$funilAtual = ['funil_id' => null, 'funil_nome' => 'Não definido', 'etapa_id' => null, 'etapa_nome' => 'Não definida'];
if ($stmtFunilAtual) {
    $stmtFunilAtual->bind_param("iii", $tenant_id, $clienteId, $tenant_id);
    $stmtFunilAtual->execute();
    $resultFunilAtual = $stmtFunilAtual->get_result();
    if ($resultFunilAtual->num_rows > 0) {
        $funilAtual = $resultFunilAtual->fetch_assoc();
    }
    $stmtFunilAtual->close();
}

// Buscar todos os funis ativos do tenant
$sqlFunis = "SELECT id, nome FROM funis 
            WHERE (tenant_id = ? OR tenant_id IS NULL) 
            AND ativo = 1
            ORDER BY padrao DESC, nome ASC";
$stmtFunis = $conn->prepare($sqlFunis);
$stmtFunis->bind_param("i", $tenant_id);
$stmtFunis->execute();
$resultFunis = $stmtFunis->get_result();
$funis = $resultFunis->fetch_all(MYSQLI_ASSOC);
$stmtFunis->close();

// Consulta produtos associados
$sqlProdutos = "SELECT 
                    COUNT(*) as total_itens, 
                    SUM(cp.quantidade) AS total_quantidade, 
                    SUM(COALESCE(lp.valor, cp.valor) * cp.quantidade) AS total_valor 
                FROM cliente_produtos cp
                LEFT JOIN lista_produtos lp ON cp.lista_produto_id = lp.id
                WHERE cp.cliente_id = ? AND cp.tenant_id = ?";
$stmtProdutos = $conn->prepare($sqlProdutos);
if ($stmtProdutos) {
    $stmtProdutos->bind_param("ii", $clienteId, $tenant_id);
    $stmtProdutos->execute();
    $produtoTotal = $stmtProdutos->get_result()->fetch_assoc();
    $stmtProdutos->close();
} else {
    $produtoTotal = ['total_itens' => 0, 'total_quantidade' => 0, 'total_valor' => 0];
}

// Buscar produtos do cliente
$sqlProdutosDetalhes = "SELECT 
                        cp.*, 
                        lp.nome as nome_original,
                        COALESCE(lp.valor, cp.valor) as valor_unitario_correto 
                 FROM cliente_produtos cp
                 LEFT JOIN lista_produtos lp ON cp.lista_produto_id = lp.id
                 WHERE cp.cliente_id = ? AND cp.tenant_id = ?
                 ORDER BY cp.data_cadastro DESC 
                 LIMIT 10";
$stmtProdutosDetalhes = $conn->prepare($sqlProdutosDetalhes);
if ($stmtProdutosDetalhes) {
    $stmtProdutosDetalhes->bind_param("ii", $clienteId, $tenant_id);
    $stmtProdutosDetalhes->execute();
    $resultadoProdutos = $stmtProdutosDetalhes->get_result();
    $produtos = $resultadoProdutos->fetch_all(MYSQLI_ASSOC);
    $stmtProdutosDetalhes->close();
} else {
    $produtos = [];
}

// Buscar atividades do cliente
$sqlAtividades = "SELECT 
                    id,
                    nome,
                    descricao,
                    data_agendada,
                    concluida,
                    duracao_minutos,
                    data_conclusao,
                    lista_atividade_id
                 FROM atividades 
                 WHERE cliente_id = ? AND tenant_id = ?
                 ORDER BY data_agendada ASC
                 LIMIT 10";

$stmtAtividades = $conn->prepare($sqlAtividades);
if ($stmtAtividades) {
    $stmtAtividades->bind_param("ii", $clienteId, $tenant_id);
    $stmtAtividades->execute();
    $resultadoAtividades = $stmtAtividades->get_result();
    $atividades = $resultadoAtividades->fetch_all(MYSQLI_ASSOC);
    $stmtAtividades->close();
} else {
    $atividades = [];
}

// Contar atividades por status
$atividadesConcluidas = 0;
$atividadesPendentes = 0;
$atividadesAtrasadas = 0;
$agora = time();

foreach ($atividades as $atividade) {
    if ($atividade['concluida'] == 1) {
        $atividadesConcluidas++;
    } else {
        $dataAgendada = strtotime($atividade['data_agendada']);
        if ($dataAgendada < $agora) {
            $atividadesAtrasadas++;
        } else {
            $atividadesPendentes++;
        }
    }
}

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

// Função para verificar se usuário pode mover clientes
function usuarioPodeMoverClientes($conn, $usuario_id, $is_admin, $is_super_admin) {
    if ($is_super_admin || $is_admin) {
        return true;
    }
    
    $stmt = $conn->prepare("SELECT mover_clientes FROM permissoes_usuarios WHERE usuario_id = ?");
    $stmt->bind_param("i", $usuario_id);
    $stmt->execute();
    $result = $stmt->get_result();
    
    if ($result->num_rows === 0) {
        return true; // Permite por padrão
    }
    
    return $result->fetch_assoc()['mover_clientes'] == 1;
}

$podeMoverClientes = usuarioPodeMoverClientes($conn, $usuario_id, $is_admin, $is_super_admin);

// Determinar status do cliente
$status_info = [
    'text' => 'Ativo',
    'class' => 'status-1'
];

if (isset($cliente['status'])) {
    switch ($cliente['status']) {
        case 0:
            $status_info = ['text' => 'Inativo', 'class' => 'status-0'];
            break;
        case 1:
            $status_info = ['text' => 'Ativo', 'class' => 'status-1'];
            break;
        case 2:
            $status_info = ['text' => 'Prospect', 'class' => 'status-2'];
            break;
        case 3:
            $status_info = ['text' => 'Lead', 'class' => 'status-3'];
            break;
        case 4:
            $status_info = ['text' => 'Oportunidade', 'class' => 'status-4'];
            break;
        case 5:
            $status_info = ['text' => 'Negociação', 'class' => 'status-5'];
            break;
        case 6:
            $status_info = ['text' => 'Fechado', 'class' => 'status-6'];
            break;
        default:
            $status_info = ['text' => 'Desconhecido', 'class' => 'status-0'];
    }
}
?>

<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Visão Geral do Cliente - <?= htmlspecialchars($cliente['Nome_Cliente'] ?? 'Cliente') ?></title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            font-family: 'Segoe UI', Arial, sans-serif;
            background: #f5f7fa;
            color: #333;
            line-height: 1.6;
            padding: 20px;
        }

        .container {
            max-width: 1300px;
            margin: 0 auto;
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 25px;
        }

        @media (max-width: 992px) {
            .container {
                grid-template-columns: 1fr;
            }
        }

        .card {
            background: #fff;
            border-radius: 12px;
            box-shadow: 0 4px 15px rgba(0,0,0,0.08);
            padding: 25px;
            margin-bottom: 25px;
        }

        .card-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 20px;
            padding-bottom: 15px;
            border-bottom: 2px solid #f0f0f0;
        }

        .card-title {
            font-size: 1.4em;
            color: #2c3e50;
            font-weight: 600;
        }

        .card-title i {
            margin-right: 10px;
            color: #3498db;
        }

        .info-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
            gap: 15px;
            margin-bottom: 20px;
        }

        .info-item {
            display: flex;
            flex-direction: column;
        }

        .info-label {
            font-size: 0.85em;
            color: #7f8c8d;
            margin-bottom: 5px;
            font-weight: 500;
        }

        .info-value {
            font-size: 1.1em;
            color: #2c3e50;
            font-weight: 600;
        }

        .status-badge {
            display: inline-block;
            padding: 4px 12px;
            border-radius: 20px;
            font-size: 0.8em;
            font-weight: 600;
        }

        .status-pendente { background: #fff3cd; color: #856404; }
        .status-concluida { background: #d4edda; color: #155724; }
        .status-atrasada { background: #f8d7da; color: #721c24; }
        .status-perdido { background: #6c757d; color: #fff; }
        .status-contactar { background: #3498db; color: #fff; }

        .btn {
            padding: 10px 18px;
            border: none;
            border-radius: 6px;
            color: #fff;
            cursor: pointer;
            font-weight: 600;
            display: inline-flex;
            align-items: center;
            gap: 8px;
            transition: all 0.3s ease;
            text-decoration: none;
            font-size: 0.9em;
        }

        .btn-primary { background: #3498db; }
        .btn-secondary { background: #95a5a6; }
        .btn-warning { background: #ffc107; color: #212529; }
        .btn-danger { background: #dc3545; }
        .btn-info { background: #17a2b8; }

        .btn:hover {
            opacity: 0.9;
            transform: translateY(-2px);
        }

        .btn:disabled {
            opacity: 0.6;
            cursor: not-allowed;
        }

        .produto-item {
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 12px;
            background: #f8f9fa;
            border-radius: 6px;
            margin-bottom: 10px;
        }

        .produto-info h4 {
            margin-bottom: 5px;
            color: #2c3e50;
        }

        .produto-meta {
            font-size: 0.85em;
            color: #7f8c8d;
        }

        .produto-valor {
            font-weight: 600;
            color: #27ae60;
            font-size: 1.1em;
        }

        .resumo-section {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
            gap: 15px;
            margin-bottom: 20px;
        }

        .resumo-card {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            padding: 20px;
            border-radius: 8px;
            text-align: center;
        }

        .resumo-card h3 {
            font-size: 2em;
            margin-bottom: 5px;
        }

        .resumo-card p {
            font-size: 0.9em;
            opacity: 0.9;
        }

        .empty-state {
            text-align: center;
            padding: 40px 20px;
            color: #95a5a6;
        }

        .empty-state i {
            font-size: 3em;
            margin-bottom: 15px;
            opacity: 0.5;
        }

        .action-buttons {
            display: flex;
            gap: 10px;
            flex-wrap: wrap;
            margin-top: 20px;
        }

        .atividade-item {
            padding: 12px;
            background: #f8f9fa;
            border-radius: 6px;
            margin-bottom: 10px;
            border-left: 4px solid #3498db;
        }

        .atividade-info h4 {
            margin-bottom: 5px;
            color: #2c3e50;
        }

        .atividade-meta {
            font-size: 0.85em;
            color: #7f8c8d;
            margin-top: 5px;
        }

        .concluida {
            border-left-color: #28a745;
            opacity: 0.8;
        }

        .atividade-status {
            display: flex;
            align-items: center;
            gap: 10px;
            margin-top: 8px;
        }

        .modal {
            display: none;
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(0,0,0,0.7);
            z-index: 10000;
            align-items: center;
            justify-content: center;
            padding: 20px;
        }

        .modal-content {
            background: white;
            padding: 30px;
            border-radius: 12px;
            width: 100%;
            max-width: 550px;
            max-height: 85vh;
            overflow-y: auto;
            box-shadow: 0 10px 30px rgba(0,0,0,0.3);
            animation: modalFadeIn 0.3s ease;
        }

        @keyframes modalFadeIn {
            from {
                opacity: 0;
                transform: translateY(-30px);
            }
            to {
                opacity: 1;
                transform: translateY(0);
            }
        }

        .modal-header {
            margin-bottom: 20px;
            padding-bottom: 15px;
            border-bottom: 1px solid #eee;
            position: relative;
        }

        .modal-header h3 {
            color: #2c3e50;
            font-size: 1.5em;
            display: flex;
            align-items: center;
            gap: 10px;
        }

        .modal-header .close-modal {
            position: absolute;
            right: 0;
            top: 0;
            background: none;
            border: none;
            font-size: 24px;
            cursor: pointer;
            color: #999;
            padding: 5px;
        }

        .modal-header .close-modal:hover {
            color: #333;
        }

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

        .form-group label {
            display: block;
            margin-bottom: 8px;
            font-weight: 600;
            color: #495057;
            font-size: 0.95em;
        }

        .form-control {
            width: 100%;
            padding: 12px;
            border: 1px solid #ced4da;
            border-radius: 6px;
            font-size: 1em;
            transition: border-color 0.3s;
        }

        .form-control:focus {
            border-color: #3498db;
            box-shadow: 0 0 0 3px rgba(52, 152, 219, 0.1);
            outline: none;
        }

        select.form-control {
            height: 46px;
            cursor: pointer;
        }

        textarea.form-control {
            min-height: 120px;
            resize: vertical;
            line-height: 1.5;
            font-family: inherit;
        }

        .modal-footer {
            display: flex;
            justify-content: flex-end;
            gap: 15px;
            margin-top: 25px;
            padding-top: 20px;
            border-top: 1px solid #eee;
        }

        .btn-close {
            background: #6c757d;
        }

        .cliente-perdido-alert {
            background: #fff3cd;
            border: 1px solid #ffeaa7;
            color: #856404;
            padding: 15px 20px;
            border-radius: 6px;
            margin-bottom: 20px;
            display: flex;
            align-items: center;
            gap: 15px;
            grid-column: 1 / -1;
        }

        .cliente-perdido-alert i {
            font-size: 1.5em;
            flex-shrink: 0;
        }

        .cliente-perdido-alert-content {
            flex-grow: 1;
        }

        .cliente-perdido-alert strong {
            display: block;
            margin-bottom: 5px;
            font-size: 1.1em;
        }

        .message {
            padding: 15px;
            border-radius: 6px;
            margin-bottom: 20px;
            display: none;
            grid-column: 1 / -1;
        }

        .message-success {
            background: #d4edda;
            color: #155724;
            border: 1px solid #c3e6cb;
        }

        .message-error {
            background: #f8d7da;
            color: #721c24;
            border: 1px solid #f5c6cb;
        }

        .spinner {
            display: inline-block;
            width: 20px;
            height: 20px;
            border: 3px solid #f3f3f3;
            border-top: 3px solid #3498db;
            border-radius: 50%;
            animation: spin 1s linear infinite;
        }

        @keyframes spin {
            0% { transform: rotate(0deg); }
            100% { transform: rotate(360deg); }
        }

        .floating-actions {
            position: fixed;
            bottom: 30px;
            right: 30px;
            display: flex;
            flex-direction: column;
            gap: 10px;
            z-index: 999;
        }

        .floating-btn {
            width: 50px;
            height: 50px;
            border-radius: 50%;
            background: #3498db;
            color: white;
            border: none;
            display: flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            box-shadow: 0 4px 12px rgba(0,0,0,0.2);
            transition: all 0.3s ease;
            font-size: 1.2em;
        }

        .floating-btn:hover {
            transform: translateY(-3px);
            box-shadow: 0 6px 15px rgba(0,0,0,0.3);
        }

        .floating-btn.danger {
            background: #dc3545;
        }

        .floating-btn.tooltip {
            position: relative;
        }

        .floating-btn .tooltip-text {
            position: absolute;
            right: 60px;
            background: #333;
            color: white;
            padding: 6px 12px;
            border-radius: 4px;
            font-size: 0.8em;
            white-space: nowrap;
            opacity: 0;
            transition: opacity 0.3s;
            pointer-events: none;
        }

        .floating-btn:hover .tooltip-text {
            opacity: 1;
        }

        .cliente-status {
            display: inline-flex;
            align-items: center;
            gap: 8px;
            padding: 6px 12px;
            border-radius: 20px;
            font-size: 0.9em;
            font-weight: 600;
            margin-left: 10px;
        }

        .status-0 { background: #6c757d; color: white; }
        .status-1 { background: #3498db; color: white; }
        .status-2 { background: #17a2b8; color: white; }
        .status-3 { background: #ffc107; color: #212529; }
        .status-4 { background: #fd7e14; color: white; }
        .status-5 { background: #20c997; color: white; }
        .status-6 { background: #28a745; color: white; }

        .funil-info {
            background: #f8f9fa;
            padding: 15px;
            border-radius: 8px;
            margin: 15px 0;
            border-left: 4px solid #3498db;
        }

        .funil-info h4 {
            color: #2c3e50;
            margin-bottom: 8px;
            display: flex;
            align-items: center;
            gap: 10px;
        }

        .funil-info-item {
            display: flex;
            align-items: center;
            gap: 10px;
            margin-bottom: 5px;
        }

        .funil-info-label {
            font-weight: 600;
            color: #495057;
            min-width: 60px;
        }

        .funil-info-value {
            color: #6c757d;
        }

        /* ESTILOS PARA A SEÇÃO DE LOGS (ADICIONADO) */
        .log-item {
            padding: 12px;
            background: #f8f9fa;
            border-radius: 6px;
            margin-bottom: 10px;
            border-left: 4px solid #6c757d;
        }

        .log-info h4 {
            margin-bottom: 5px;
            color: #2c3e50;
            font-size: 1em;
            display: flex;
            justify-content: space-between;
            align-items: center;
        }

        .log-meta {
            font-size: 0.85em;
            color: #7f8c8d;
            margin-top: 5px;
        }

        .log-detalhes {
            background: #fff;
            border: 1px solid #dee2e6;
            border-radius: 4px;
            padding: 10px;
            margin-top: 8px;
            font-size: 0.85em;
            color: #495057;
            white-space: pre-wrap;
            word-break: break-word;
        }

        .log-actions {
            margin-top: 10px;
        }

        .log-type-badge {
            display: inline-block;
            padding: 3px 8px;
            border-radius: 12px;
            font-size: 0.75em;
            font-weight: 600;
            margin-left: 8px;
        }

        .log-type-cadastro { background: #d4edda; color: #155724; }
        .log-type-atualizacao { background: #cce5ff; color: #004085; }
        .log-type-exclusao { background: #f8d7da; color: #721c24; }
        .log-type-conclusao { background: #d1ecf1; color: #0c5460; }
        .log-type-envio { background: #fff3cd; color: #856404; }
    </style>
</head>
<body>
    <!-- Modal para marcar como perdido -->
    <div id="modalPerdido" class="modal">
        <div class="modal-content">
            <div class="modal-header">
                <h3><i class="fas fa-exclamation-triangle"></i> Marcar Cliente como Perdido</h3>
                <button type="button" class="close-modal" onclick="fecharModalPerdido()">&times;</button>
            </div>
            <form id="formPerdido">
                <div class="form-group">
                    <label for="motivo"><i class="fas fa-flag"></i> Motivo *</label>
                    <select name="motivo" id="motivo" class="form-control" required>
                        <option value="">Selecione um motivo...</option>
                        <option value="Desistência">Desistência</option>
                        <option value="Sem interesse">Sem interesse</option>
                        <option value="Preço elevado">Preço elevado</option>
                        <option value="Concorrência">Concorrência</option>
                        <option value="Não atende">Não atende</option>
                        <option value="Mudou de ideia">Mudou de ideia</option>
                        <option value="Problemas financeiros">Problemas financeiros</option>
                        <option value="Outro">Outro</option>
                    </select>
                </div>
                
                <div class="form-group">
                    <label for="observacoes"><i class="fas fa-sticky-note"></i> Observações (opcional)</label>
                    <textarea name="observacoes" id="observacoes" class="form-control" 
                              placeholder="Detalhes adicionais sobre o motivo..."></textarea>
                </div>
                
                <div class="form-group">
                    <div class="alert alert-warning" style="background: #fff3cd; color: #856404; padding: 10px; border-radius: 4px; border-left: 4px solid #ffc107;">
                        <i class="fas fa-exclamation-circle"></i> <strong>Atenção:</strong> O cliente será marcado como perdido, 
                        removido do funil atual e movido para a lista de clientes perdidos.
                    </div>
                </div>
                
                <div class="modal-footer">
                    <button type="button" class="btn btn-close" onclick="fecharModalPerdido()">
                        <i class="fas fa-times"></i> Cancelar
                    </button>
                    <button type="submit" class="btn btn-danger">
                        <i class="fas fa-user-slash"></i> Confirmar Perda
                    </button>
                </div>
            </form>
        </div>
    </div>

    <!-- Modal para trocar funil -->
    <div id="modalTrocarFunil" class="modal">
        <div class="modal-content">
            <div class="modal-header">
                <h3><i class="fas fa-exchange-alt"></i> Trocar Funil do Cliente</h3>
                <button type="button" class="close-modal" onclick="fecharModalTrocarFunil()">&times;</button>
            </div>
            <form id="formTrocarFunil">
                <input type="hidden" name="cliente_id" value="<?= $clienteId ?>">
                
                <div class="form-group">
                    <label for="novo_funil_id"><i class="fas fa-filter"></i> Novo Funil *</label>
                    <select name="novo_funil_id" id="novo_funil_id" class="form-control" required onchange="carregarEtapas(this.value)">
                        <option value="">Selecione um funil...</option>
                        <?php foreach ($funis as $funil): ?>
                            <option value="<?= $funil['id'] ?>" <?= $funil['id'] == $funilAtual['funil_id'] ? 'selected' : '' ?>>
                                <?= htmlspecialchars($funil['nome']) ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                </div>
                
                <div class="form-group">
                    <label for="nova_etapa_id"><i class="fas fa-step-forward"></i> Nova Etapa *</label>
                    <select name="nova_etapa_id" id="nova_etapa_id" class="form-control" required disabled>
                        <option value="">Primeiro selecione um funil</option>
                    </select>
                    <small style="color: #6c757d; display: block; margin-top: 5px;">
                        As etapas serão carregadas após selecionar um funil.
                    </small>
                </div>
                
                <div class="funil-info" id="infoFunilAtual">
                    <h4><i class="fas fa-info-circle"></i> Funil Atual</h4>
                    <div class="funil-info-item">
                        <span class="funil-info-label">Funil:</span>
                        <span class="funil-info-value"><?= htmlspecialchars($funilAtual['funil_nome']) ?></span>
                    </div>
                    <div class="funil-info-item">
                        <span class="funil-info-label">Etapa:</span>
                        <span class="funil-info-value"><?= htmlspecialchars($funilAtual['etapa_nome']) ?></span>
                    </div>
                </div>
                
                <div class="modal-footer">
                    <button type="button" class="btn btn-close" onclick="fecharModalTrocarFunil()">
                        <i class="fas fa-times"></i> Cancelar
                    </button>
                    <button type="submit" class="btn btn-primary">
                        <i class="fas fa-exchange-alt"></i> Trocar Funil
                    </button>
                </div>
            </form>
        </div>
    </div>

    <!-- Mensagens -->
    <div id="messageSuccess" class="message message-success" style="display: none;"></div>
    <div id="messageError" class="message message-error" style="display: none;"></div>

    <div class="container">
        <?php if ($clientePerdido): ?>
        <div class="cliente-perdido-alert">
            <i class="fas fa-exclamation-triangle"></i>
            <div class="cliente-perdido-alert-content">
                <strong>Atenção: Este cliente já está marcado como PERDIDO.</strong>
                <div style="font-size: 0.95em; margin-top: 5px;">
                    Para restaurá-lo, acesse a página de "Clientes Perdidos". O cliente foi removido do funil.
                </div>
            </div>
        </div>
        <?php endif; ?>

        <!-- Coluna 1: Informações do Cliente -->
        <div>
            <!-- Card de Informações Básicas -->
            <div class="card">
                <div class="card-header">
                    <h2 class="card-title">
                        <i class="fas fa-user"></i> <?= htmlspecialchars($cliente['Nome_Cliente'] ?? 'Cliente') ?>
                        
                        <span class="cliente-status <?= $status_info['class'] ?>">
                            <?= $status_info['text'] ?>
                        </span>
                        <?php if ($clientePerdido): ?>
                            <span class="status-badge status-perdido">PERDIDO</span>
                        <?php endif; ?>
                    </h2>
                </div>
                
                <?php if (isset($cliente['Nome_Cliente'])): ?>
                <div class="info-grid">
                    <div class="info-item">
                        <span class="info-label">Status</span>
                        <span class="info-value"><?= $status_info['text'] ?></span>
                    </div>
                    
                    <div class="info-item">
                        <span class="info-label">Funil</span>
                        <span class="info-value">
                            <i class="fas fa-filter"></i> <?= htmlspecialchars($funilAtual['funil_nome']) ?>
                        </span>
                    </div>
                    
                    <div class="info-item">
                        <span class="info-label">Etapa</span>
                        <span class="info-value">
                            <i class="fas fa-step-forward"></i> <?= htmlspecialchars($funilAtual['etapa_nome']) ?>
                        </span>
                    </div>
                    
                    <div class="info-item">
                        <span class="info-label">Email</span>
                        <span class="info-value">
                            <?php if (!empty($cliente['Email'])): ?>
                                <a href="mailto:<?= htmlspecialchars($cliente['Email']) ?>" style="color: #3498db; text-decoration: none;">
                                    <i class="fas fa-envelope"></i> <?= htmlspecialchars($cliente['Email']) ?>
                                </a>
                            <?php else: ?>
                                Não informado
                            <?php endif; ?>
                        </span>
                    </div>
                    
                    <div class="info-item">
                        <span class="info-label">Telefone</span>
                        <span class="info-value">
                            <?php if (!empty($cliente['Telefone'])): ?>
                                <a href="tel:<?= htmlspecialchars($cliente['Telefone']) ?>" style="color: #3498db; text-decoration: none;">
                                    <i class="fas fa-phone"></i> <?= htmlspecialchars($cliente['Telefone']) ?>
                                </a>
                            <?php else: ?>
                                Não informado
                            <?php endif; ?>
                        </span>
                    </div>
                    
                    <div class="info-item">
                        <span class="info-label">Cidade/Estado</span>
                        <span class="info-value">
                            <?= htmlspecialchars($cliente['Cidade'] ?? '') ?>
                            <?php if (!empty($cliente['Estado'])): ?>
                                /<?= htmlspecialchars($cliente['Estado'] ?? '') ?>
                            <?php endif; ?>
                        </span>
                    </div>
                    
                    <div class="info-item">
                        <span class="info-label">Origem</span>
                        <span class="info-value"><?= !empty($cliente['Origem']) ? htmlspecialchars($cliente['Origem']) : 'Não informada' ?></span>
                    </div>
                    
                    <div class="info-item">
                        <span class="info-label">Data Cadastro</span>
                        <span class="info-value"><?= date('d/m/Y', strtotime($cliente['Data_Cadastro'])) ?></span>
                    </div>
                </div>

                <?php if (!empty($cliente['Observacoes'])): ?>
                <div class="info-item">
                    <span class="info-label">Observações</span>
                    <div style="background: #f8f9fa; padding: 15px; border-radius: 6px; margin-top: 5px; border-left: 3px solid #3498db;">
                        <?= nl2br(htmlspecialchars($cliente['Observacoes'])) ?>
                    </div>
                </div>
                <?php endif; ?>
                
                <?php else: ?>
                <div class="empty-state">
                    <i class="fas fa-exclamation-triangle"></i>
                    <p>Cliente não encontrado ou sem permissão de acesso</p>
                </div>
                <?php endif; ?>
                
                
            </div>

            <!-- Card de Produtos -->
            <div class="card">
                <div class="card-header">
                    <h2 class="card-title"><i class="fas fa-box-open"></i> Produtos</h2>
                    <span class="info-value"><?= $produtoTotal['total_itens'] ?? 0 ?> itens</span>
                </div>

                <?php if (($produtoTotal['total_itens'] ?? 0) > 0): ?>
                <div class="resumo-section">
                    <div class="resumo-card">
                        <h3><?= $produtoTotal['total_quantidade'] ?? 0 ?></h3>
                        <p>Quantidade Total</p>
                    </div>
                    <div class="resumo-card" style="background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);">
                        <h3>R$ <?= number_format(($produtoTotal['total_valor'] ?? 0), 2, ',', '.') ?></h3>
                        <p>Valor Total</p>
                    </div>
                </div>

                <?php if (!empty($produtos)): ?>
                    <?php foreach ($produtos as $produto): ?>
                        <div class="produto-item">
                            <div class="produto-info">
                                <h4><?= htmlspecialchars($produto['nome_produto'] ?? $produto['nome_original'] ?? 'Produto sem nome') ?></h4>
                                <div class="produto-meta">
                                    <i class="fas fa-boxes"></i> Quantidade: <?= $produto['quantidade'] ?? 0 ?> | 
                                    <i class="fas fa-tag"></i> Unitário: R$ <?= number_format(($produto['valor_unitario_correto'] ?? $produto['valor'] ?? 0), 2, ',', '.') ?>
                                </div>
                                <?php if (!empty($produto['observacoes'])): ?>
                                    <div class="produto-meta"><i class="fas fa-sticky-note"></i> <?= htmlspecialchars($produto['observacoes']) ?></div>
                                <?php endif; ?>
                            </div>
                            <div class="produto-valor">
                                R$ <?= number_format((($produto['valor_unitario_correto'] ?? $produto['valor'] ?? 0) * ($produto['quantidade'] ?? 0)), 2, ',', '.') ?>
                            </div>
                        </div>
                    <?php endforeach; ?>
                <?php endif; ?>
                <?php else: ?>
                    <div class="empty-state">
                        <i class="fas fa-box-open"></i>
                        <p>Nenhum produto cadastrado para este cliente</p>
                    </div>
                <?php endif; ?>
            </div>
        </div>

        <!-- Coluna 2: Atividades e Logs -->
        <div>
            <!-- Card de Atividades -->
            <div class="card">
                <div class="card-header">
                    <h2 class="card-title"><i class="fas fa-tasks"></i> Atividades</h2>
                    <span class="info-value"><?= count($atividades) ?> atividades</span>
                </div>

                <?php if (!empty($atividades)): ?>
                    <div class="resumo-section">
                        <div class="resumo-card" style="background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);">
                            <h3><?= $atividadesConcluidas ?></h3>
                            <p>Concluídas</p>
                        </div>
                        <div class="resumo-card" style="background: linear-gradient(135deg, #43e97b 0%, #38f9d7 100%);">
                            <h3><?= $atividadesPendentes ?></h3>
                            <p>Pendentes</p>
                        </div>
                        <div class="resumo-card" style="background: linear-gradient(135deg, #fa709a 0%, #fee140 100%);">
                            <h3><?= $atividadesAtrasadas ?></h3>
                            <p>Atrasadas</p>
                        </div>
                    </div>

                    <div style="max-height: 400px; overflow-y: auto; padding-right: 5px;">
                        <?php foreach ($atividades as $atividade): 
                            $status = $atividade['concluida'] ? 'concluida' : 
                                    (strtotime($atividade['data_agendada']) < time() ? 'atrasada' : 'pendente');
                        ?>
                            <div class="atividade-item <?= $atividade['concluida'] ? 'concluida' : '' ?>">
                                <div class="atividade-info">
                                    <h4><?= htmlspecialchars($atividade['nome']) ?></h4>
                                    <?php if (!empty($atividade['descricao'])): ?>
                                        <div class="atividade-meta">
                                            <?= htmlspecialchars($atividade['descricao']) ?>
                                        </div>
                                    <?php endif; ?>
                                    <div class="atividade-status">
                                        <span class="status-badge status-<?= $status ?>">
                                            <i class="fas fa-<?= $status === 'concluida' ? 'check-circle' : ($status === 'atrasada' ? 'exclamation-circle' : 'clock') ?>"></i>
                                            <?= ucfirst($status) ?>
                                        </span>
                                        <span class="atividade-meta">
                                            <i class="far fa-calendar"></i> <?= date('d/m/Y H:i', strtotime($atividade['data_agendada'])) ?>
                                        </span>
                                        <?php if (!empty($atividade['duracao_minutos'])): ?>
                                            <span class="atividade-meta">
                                                <i class="far fa-clock"></i> <?= $atividade['duracao_minutos'] ?>min
                                            </span>
                                        <?php endif; ?>
                                    </div>
                                    <?php if ($atividade['concluida'] && !empty($atividade['data_conclusao'])): ?>
                                        <div class="atividade-meta" style="color: #28a745;">
                                            <i class="fas fa-check-circle"></i>
                                            <strong>Concluída em:</strong> <?= date('d/m/Y H:i', strtotime($atividade['data_conclusao'])) ?>
                                        </div>
                                    <?php endif; ?>
                                </div>
                            </div>
                        <?php endforeach; ?>
                    </div>

                    <?php if (count($atividades) > 5): ?>
                        <div style="text-align: center; margin-top: 15px;">
                            <button class="btn btn-primary" onclick="verTodasAtividades()">
                                <i class="fas fa-list"></i> Ver Todas as Atividades
                            </button>
                        </div>
                    <?php endif; ?>
                <?php else: ?>
                    <div class="empty-state">
                        <i class="fas fa-tasks"></i>
                        <p>Nenhuma atividade agendada</p>
                      
                    </div>
                <?php endif; ?>
            </div>

            <!-- NOVA SEÇÃO: LOGS DO CLIENTE -->
            <div class="card">
                <div class="card-header">
                    <h2 class="card-title"><i class="fas fa-history"></i> Histórico de Atividades</h2>
                    <span class="info-value"><?= count($logs) ?> registros</span>
                </div>

                <?php if (!empty($logs)): ?>
                    <div style="max-height: 400px; overflow-y: auto; padding-right: 5px;">
                        <?php foreach ($logs as $log): 
                            // Determinar tipo de log para badge
                            $logTypeClass = 'log-type-atualizacao';
                            $logTypeText = 'Atualização';
                            
                            if (strpos($log['acao'], 'cadastro') !== false) {
                                $logTypeClass = 'log-type-cadastro';
                                $logTypeText = 'Cadastro';
                            } elseif (strpos($log['acao'], 'exclusao') !== false) {
                                $logTypeClass = 'log-type-exclusao';
                                $logTypeText = 'Exclusão';
                            } elseif (strpos($log['acao'], 'conclusao') !== false) {
                                $logTypeClass = 'log-type-conclusao';
                                $logTypeText = 'Conclusão';
                            } elseif (strpos($log['acao'], 'envio') !== false) {
                                $logTypeClass = 'log-type-envio';
                                $logTypeText = 'Envio';
                            }
                            
                            // Traduzir ação para português
                            $acaoTraduzida = $log['acao'];
                            $traducoes = [
                                'cadastro_produto' => 'Cadastro de Produto',
                                'exclusao_produto' => 'Exclusão de Produto',
                                'cadastro_atividade' => 'Cadastro de Atividade',
                                'conclusao_atividade' => 'Conclusão de Atividade',
                                'exclusao_atividade' => 'Exclusão de Atividade',
                                'upload_arquivo' => 'Upload de Arquivo',
                                'envio_formulario' => 'Envio de Formulário',
                                'atualizacao_campo' => 'Atualização de Campo',
                                'movimentacao_etapa' => 'Movimentação de Etapa',
                                'troca_funil' => 'Troca de Funil'
                            ];
                            
                            if (isset($traducoes[$log['acao']])) {
                                $acaoTraduzida = $traducoes[$log['acao']];
                            }
                        ?>
                            <div class="log-item">
                                <div class="log-info">
                                    <h4>
                                        <?= htmlspecialchars($acaoTraduzida) ?>
                                        <span class="log-type-badge <?= $logTypeClass ?>">
                                            <?= $logTypeText ?>
                                        </span>
                                    </h4>
                                    <div class="log-meta">
                                        <i class="far fa-user"></i> 
                                        <?= !empty($log['nome_usuario']) ? htmlspecialchars($log['nome_usuario']) : 'Sistema' ?>
                                        <span style="margin: 0 10px;">•</span>
                                        <i class="far fa-clock"></i> 
                                        <?= date('d/m/Y H:i', strtotime($log['data_hora'])) ?>
                                    </div>
                                </div>
                                
                                <?php if (!empty($log['detalhes'])): ?>
                                    <div class="log-detalhes">
                                        <?= htmlspecialchars($log['detalhes']) ?>
                                    </div>
                                <?php endif; ?>
                            </div>
                        <?php endforeach; ?>
                    </div>

                    <?php if (count($logs) > 5): ?>
                        <div style="text-align: center; margin-top: 15px;">
                            <button class="btn btn-info" onclick="verTodosLogs()">
                                <i class="fas fa-history"></i> Ver Histórico Completo
                            </button>
                        </div>
                    <?php endif; ?>
                <?php else: ?>
                    <div class="empty-state">
                        <i class="fas fa-history"></i>
                        <p>Nenhum registro de atividade encontrado</p>
                    </div>
                <?php endif; ?>
            </div>
        </div>
    </div>

    <!-- Botões flutuantes para dispositivos móveis -->
    <div class="floating-actions">
        <?php if (!$clientePerdido): ?>
        <button class="floating-btn danger tooltip" onclick="abrirModalPerdido()">
            <i class="fas fa-user-slash"></i>
            <span class="tooltip-text">Marcar como Perdido</span>
        </button>
        <?php endif; ?>
        <button class="floating-btn tooltip" onclick="editarCliente()">
            <i class="fas fa-edit"></i>
            <span class="tooltip-text">Editar Cliente</span>
        </button>
        <?php if ($podeMoverClientes && !$clientePerdido): ?>
        <button class="floating-btn tooltip" onclick="abrirModalTrocarFunil()">
            <i class="fas fa-exchange-alt"></i>
            <span class="tooltip-text">Trocar Funil</span>
        </button>
        <?php endif; ?>
    </div>

    <script>
        function abrirModalPerdido() {
            console.log('Abrindo modal de marcação como perdido');
            const modal = document.getElementById('modalPerdido');
            modal.style.display = 'flex';
            document.body.style.overflow = 'hidden';
        }

        function fecharModalPerdido() {
            console.log('Fechando modal');
            const modal = document.getElementById('modalPerdido');
            modal.style.display = 'none';
            document.body.style.overflow = 'auto';
        }

        function abrirModalTrocarFunil() {
            console.log('Abrindo modal de trocar funil');
            const modal = document.getElementById('modalTrocarFunil');
            modal.style.display = 'flex';
            document.body.style.overflow = 'hidden';
            
            // Carregar etapas se já tiver um funil selecionado
            const funilSelect = document.getElementById('novo_funil_id');
            if (funilSelect.value) {
                carregarEtapas(funilSelect.value);
            }
        }

        function fecharModalTrocarFunil() {
            console.log('Fechando modal de trocar funil');
            const modal = document.getElementById('modalTrocarFunil');
            modal.style.display = 'none';
            document.body.style.overflow = 'auto';
        }

        window.addEventListener('click', function(event) {
            const modalPerdido = document.getElementById('modalPerdido');
            const modalTrocarFunil = document.getElementById('modalTrocarFunil');
            
            if (event.target === modalPerdido) {
                fecharModalPerdido();
            }
            if (event.target === modalTrocarFunil) {
                fecharModalTrocarFunil();
            }
        });

        document.addEventListener('keydown', function(event) {
            if (event.key === 'Escape') {
                const modalPerdido = document.getElementById('modalPerdido');
                const modalTrocarFunil = document.getElementById('modalTrocarFunil');
                
                if (modalPerdido.style.display === 'flex') {
                    fecharModalPerdido();
                }
                if (modalTrocarFunil.style.display === 'flex') {
                    fecharModalTrocarFunil();
                }
            }
        });

        // Função para carregar etapas dinamicamente
        async function carregarEtapas(funilId) {
            const etapaSelect = document.getElementById('nova_etapa_id');
            
            if (!funilId) {
                etapaSelect.innerHTML = '<option value="">Primeiro selecione um funil</option>';
                etapaSelect.disabled = true;
                return;
            }
            
            etapaSelect.innerHTML = '<option value="">Carregando etapas...</option>';
            etapaSelect.disabled = true;
            
            try {
                const response = await fetch(`buscar_etapas.php?funil_id=${funilId}`);
                
                if (!response.ok) {
                    throw new Error('Erro ao buscar etapas');
                }
                
                const etapas = await response.json();
                
                etapaSelect.innerHTML = '<option value="">Selecione uma etapa...</option>';
                
                if (etapas && etapas.length > 0) {
                    etapas.forEach(etapa => {
                        const option = document.createElement('option');
                        option.value = etapa.id;
                        option.textContent = etapa.nome;
                        etapaSelect.appendChild(option);
                    });
                    etapaSelect.disabled = false;
                } else {
                    etapaSelect.innerHTML = '<option value="">Nenhuma etapa encontrada</option>';
                }
            } catch (error) {
                console.error('Erro ao carregar etapas:', error);
                etapaSelect.innerHTML = '<option value="">Erro ao carregar etapas</option>';
            }
        }

        document.getElementById('formPerdido').addEventListener('submit', async function(e) {
            e.preventDefault();
            console.log('Formulário de perdido submetido');
            
            const motivo = document.getElementById('motivo').value;
            
            if (!motivo) {
                mostrarMensagem('Por favor, selecione um motivo.', 'error');
                return;
            }
            
            if (!confirm('Tem certeza que deseja marcar este cliente como PERDIDO?\n\nEsta ação:\n1. Removerá o cliente do funil atual\n2. Moverá para a lista de clientes perdidos\n3. Poderá ser revertida posteriormente')) {
                return;
            }
            
            const submitBtn = this.querySelector('button[type="submit"]');
            const originalText = submitBtn.innerHTML;
            submitBtn.innerHTML = '<span class="spinner"></span> Processando...';
            submitBtn.disabled = true;
            
            try {
                const formData = new FormData(this);
                formData.append('marcar_perdido', '1');
                
                const response = await fetch('visao_geral_cliente.php?id=<?= $clienteId ?>', {
                    method: 'POST',
                    body: formData
                });
                
                const data = await response.json();
                
                if (data.success) {
                    mostrarMensagem(data.message, 'success');
                    
                    setTimeout(() => {
                        fecharModalPerdido();
                        
                        if (data.redirect) {
                            if (window.opener) {
                                window.opener.location.href = data.redirect;
                                window.close();
                            } else {
                                window.location.href = data.redirect;
                            }
                        } else {
                            window.location.reload();
                        }
                    }, 2000);
                } else {
                    mostrarMensagem(data.error || 'Erro ao processar a solicitação', 'error');
                    submitBtn.innerHTML = originalText;
                    submitBtn.disabled = false;
                }
            } catch (error) {
                console.error('Erro:', error);
                mostrarMensagem('Erro de conexão com o servidor', 'error');
                submitBtn.innerHTML = originalText;
                submitBtn.disabled = false;
            }
        });

        // Formulário para trocar funil
        document.getElementById('formTrocarFunil').addEventListener('submit', async function(e) {
            e.preventDefault();
            
            const novoFunil = document.getElementById('novo_funil_id').value;
            const novaEtapa = document.getElementById('nova_etapa_id').value;
            
            if (!novoFunil || !novaEtapa) {
                mostrarMensagem('Por favor, selecione um funil e uma etapa.', 'error');
                return;
            }
            
            if (!confirm('Tem certeza que deseja mover este cliente para outro funil?')) {
                return;
            }
            
            const submitBtn = this.querySelector('button[type="submit"]');
            const originalText = submitBtn.innerHTML;
            submitBtn.innerHTML = '<span class="spinner"></span> Processando...';
            submitBtn.disabled = true;
            
            try {
                const formData = new FormData(this);
                formData.append('trocar_funil', '1');
                
                const response = await fetch('visao_geral_cliente.php?id=<?= $clienteId ?>', {
                    method: 'POST',
                    body: formData
                });
                
                const data = await response.json();
                
                if (data.success) {
                    mostrarMensagem(data.message, 'success');
                    
                    setTimeout(() => {
                        fecharModalTrocarFunil();
                        
                        if (data.redirect) {
                            window.location.href = data.redirect;
                        } else {
                            window.location.reload();
                        }
                    }, 2000);
                } else {
                    mostrarMensagem(data.error || 'Erro ao processar a solicitação', 'error');
                    submitBtn.innerHTML = originalText;
                    submitBtn.disabled = false;
                }
            } catch (error) {
                console.error('Erro:', error);
                mostrarMensagem('Erro de conexão com o servidor', 'error');
                submitBtn.innerHTML = originalText;
                submitBtn.disabled = false;
            }
        });

        function mostrarMensagem(texto, tipo) {
            const successMsg = document.getElementById('messageSuccess');
            const errorMsg = document.getElementById('messageError');
            
            if (tipo === 'success') {
                successMsg.textContent = texto;
                successMsg.style.display = 'block';
                errorMsg.style.display = 'none';
            } else {
                errorMsg.textContent = texto;
                errorMsg.style.display = 'block';
                successMsg.style.display = 'none';
            }
            
            setTimeout(() => {
                successMsg.style.display = 'none';
                errorMsg.style.display = 'none';
            }, 5000);
            
            successMsg.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
        }

        function editarCliente() {
            const url = 'editar_cliente.php?id=<?= $clienteId ?>';
            if (window.opener) {
                window.opener.location.href = url;
                window.close();
            } else {
                window.location.href = url;
            }
        }

        function verTodasAtividades() {
            window.location.href = 'editar_cliente.php?id=<?= $clienteId ?>#atividades';
        }

        function verTodosLogs() {
            window.location.href = 'editar_cliente.php?id=<?= $clienteId ?>#logs';
        }

        function novaAtividade() {
            window.location.href = 'editar_cliente.php?id=<?= $clienteId ?>#atividades';
        }

        if (!document.querySelector('link[href*="font-awesome"]')) {
            const link = document.createElement('link');
            link.rel = 'stylesheet';
            link.href = 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css';
            document.head.appendChild(link);
        }

        document.addEventListener('DOMContentLoaded', function() {
            const floatingBtns = document.querySelectorAll('.floating-btn.tooltip');
            floatingBtns.forEach(btn => {
                btn.addEventListener('mouseenter', function() {
                    const tooltip = this.querySelector('.tooltip-text');
                    if (tooltip) {
                        tooltip.style.opacity = '1';
                    }
                });
                
                btn.addEventListener('mouseleave', function() {
                    const tooltip = this.querySelector('.tooltip-text');
                    if (tooltip) {
                        tooltip.style.opacity = '0';
                    }
                });
            });
        });
    </script>
</body>
</html>
<?php
$conn->close();
?>