<?php
session_start();

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

require_once 'conexao.php';
require_once 'verificador_fluxos_automatizados.php';

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

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

// NOVA FUNÇÃO: Registrar log na tabela cliente_logs
function registrarLogCliente($conn, $clienteId, $acao, $detalhes = '') {
    try {
        $tenantId = $_SESSION['tenant_id'];
        $usuarioId = $_SESSION['usuario_id'];
        $nomeUsuario = $_SESSION['nome_usuario'] ?? 'Sistema';
        
        $sql = "INSERT INTO cliente_logs (cliente_id, usuario_id, nome_usuario, acao, detalhes, tenant_id, data_hora) 
                VALUES (?, ?, ?, ?, ?, ?, NOW())";
        
        $stmt = $conn->prepare($sql);
        $stmt->bind_param("iissss", $clienteId, $usuarioId, $nomeUsuario, $acao, $detalhes, $tenantId);
        $result = $stmt->execute();
        $stmt->close();
        
        return $result;
    } catch (Exception $e) {
        registrarLog('Erro ao registrar log na tabela', $e->getMessage());
        return false;
    }
}

// NOVA FUNÇÃO: Verificar se CPF/CNPJ já existe na base
function verificarCpfCnpjExistente($conn, $cpfCnpj, $tenantId, $clienteId = null) {
    try {
        $cpfCnpj = preg_replace('/\D/', '', $cpfCnpj);
        
        if (empty($cpfCnpj)) {
            return false;
        }
        
        // Se for fornecido um clienteId, exclui o próprio cliente da verificação (para edição)
        if ($clienteId) {
            $sql = "SELECT COUNT(*) as total FROM clientes WHERE CPF_CNPJ = ? AND tenant_id = ? AND id != ?";
            $stmt = $conn->prepare($sql);
            $stmt->bind_param("sii", $cpfCnpj, $tenantId, $clienteId);
        } else {
            $sql = "SELECT COUNT(*) as total FROM clientes WHERE CPF_CNPJ = ? AND tenant_id = ?";
            $stmt = $conn->prepare($sql);
            $stmt->bind_param("si", $cpfCnpj, $tenantId);
        }
        
        $stmt->execute();
        $result = $stmt->get_result();
        $row = $result->fetch_assoc();
        $stmt->close();
        
        return $row['total'] > 0;
    } catch (Exception $e) {
        registrarLog('Erro ao verificar CPF/CNPJ existente', $e->getMessage());
        return false;
    }
}

// FUNÇÃO DE ENVIO DE E-MAIL PARA RESPONSÁVEL DO CLIENTE
function enviarEmailResponsavel($conn, $clienteId, $responsavelId, $clienteNome) {
    try {
        // CORREÇÃO: Validar se o responsável tem e-mail válido na tabela usuarios
        $stmt = $conn->prepare("SELECT nome, email FROM usuarios WHERE id = ? AND email IS NOT NULL AND email != ''");
        $stmt->bind_param("i", $responsavelId);
        $stmt->execute();
        $result = $stmt->get_result();
        
        if ($result->num_rows === 0) {
            registrarLog('Erro ao enviar email', "Responsável ID $responsavelId não encontrado ou sem e-mail válido");
            return false;
        }
        
        $responsavel = $result->fetch_assoc();
        $stmt->close();
        
        // CORREÇÃO RIGOROSA: Validar formato do e-mail do responsável
        if (!filter_var($responsavel['email'], FILTER_VALIDATE_EMAIL)) {
            registrarLog('Erro ao enviar email', "Email do responsável inválido: {$responsavel['email']}");
            return false;
        }
        
        // Buscar informações do usuário que cadastrou
        $usuarioCadastro = $_SESSION['nome_usuario'] ?? 'Sistema';
        $tenantId = $_SESSION['tenant_id'];
        
        // Configurar dados do e-mail
        $destinatario = $responsavel['email'];
        $assunto = "Você foi designado como responsável pelo cliente: $clienteNome";
        $mensagem = criarTemplateEmailCliente($clienteNome, $usuarioCadastro, $responsavel['nome']);
        
        // Enviar e-mail usando a função que funciona
        $enviado = enviarEmailNotificacao($destinatario, $assunto, $mensagem, $tenantId);
        
        if ($enviado) {
            registrarLog('Email enviado ao responsável', "Cliente: $clienteNome, Responsável: {$responsavel['email']}");
            return true;
        } else {
            registrarLog('Erro ao enviar email', "Falha no envio para: {$responsavel['email']}");
            return false;
        }
        
    } catch (Exception $e) {
        registrarLog('Erro ao enviar email', $e->getMessage());
        return false;
    }
}

// FUNÇÃO DE ENVIO DE E-MAIL (COPIADA DO SEU CÓDIGO QUE FUNCIONA)
function enviarEmailNotificacao($destinatario, $assunto, $mensagem, $tenant_id) {
    // Configurações de e-mail por tenant (você pode personalizar por empresa)
    $configs = [
        1 => [ // Tenant 1
            'from_email' => 'sistema@empresa1.com',
            'from_name' => 'Sistema Empresa 1'
        ],
        2 => [ // Tenant 2  
            'from_email' => 'sistema@empresa2.com',
            'from_name' => 'Sistema Empresa 2'
        ]
        // Adicione mais tenants conforme necessário
    ];
    
    $config = $configs[$tenant_id] ?? [
        'from_email' => 'sistema@son.com',
        'from_name' => 'SON Sistema'
    ];
    
    $headers = "From: {$config['from_name']} <{$config['from_email']}>\r\n";
    $headers .= "Reply-To: {$config['from_email']}\r\n";
    $headers .= "Content-Type: text/html; charset=UTF-8\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    
    // Log para debug (remova em produção)
    error_log("Tentando enviar e-mail para: $destinatario - Assunto: $assunto");
    
    return mail($destinatario, $assunto, $mensagem, $headers);
}

// FUNÇÃO PARA CRIAR TEMPLATE DE E-MAIL PARA CLIENTE
function criarTemplateEmailCliente($clienteNome, $usuarioCadastro, $responsavelNome) {
    return "
        <html>
        <head>
            <style>
                body { 
                    font-family: Arial, sans-serif; 
                    margin: 0;
                    padding: 0;
                    background-color: #f5f5f5;
                }
                .container { 
                    max-width: 600px; 
                    margin: 0 auto; 
                    background: white;
                    border-radius: 8px;
                    overflow: hidden;
                    box-shadow: 0 2px 10px rgba(0,0,0,0.1);
                }
                .header { 
                    background: linear-gradient(135deg, #007bff, #0056b3);
                    color: white; 
                    padding: 30px 20px;
                    text-align: center;
                }
                .content { 
                    padding: 30px;
                    line-height: 1.6;
                    color: #333;
                }
                .info-box { 
                    background: #f8f9fa; 
                    padding: 20px;
                    border-left: 4px solid #007bff;
                    margin: 20px 0;
                    border-radius: 4px;
                }
                .button { 
                    display: inline-block; 
                    background: #007bff; 
                    color: white; 
                    padding: 12px 24px; 
                    text-decoration: none; 
                    border-radius: 4px; 
                    margin-top: 20px;
                    font-weight: bold;
                }
                .footer { 
                    text-align: center; 
                    margin-top: 30px; 
                    padding: 20px; 
                    color: #666; 
                    font-size: 12px;
                    border-top: 1px solid #eee;
                }
                ul {
                    margin: 15px 0;
                    padding-left: 20px;
                }
                li {
                    margin-bottom: 8px;
                }
            </style>
        </head>
        <body>
            <div class='container'>
                <div class='header'>
                    <h1 style='margin: 0; font-size: 24px;'>Novo Cliente Atribuído</h1>
                </div>
                <div class='content'>
                    <p>Olá <strong>$responsavelNome</strong>,</p>
                    
                    <p>Você foi designado como responsável pelo cliente:</p>
                    
                    <div class='info-box'>
                        <h3 style='margin-top: 0; color: #007bff;'>$clienteNome</h3>
                        <p><strong>Cadastrado por:</strong> $usuarioCadastro</p>
                        <p><strong>Data:</strong> " . date('d/m/Y H:i') . "</p>
                    </div>
                    
                    <p>Como responsável, você deverá:</p>
                    <ul>
                        <li>Realizar o acompanhamento do cliente</li>
                        <li>Registrar todas as interações importantes</li>
                        <li>Atualizar o status conforme necessário</li>
                        <li>Garantir a satisfação do cliente</li>
                        <li>Manter as informações do cliente atualizadas</li>
                    </ul>
                    
                    <div style='text-align: center;'>
                        <a href='https://" . $_SERVER['HTTP_HOST'] . "/lista_clientes.php' class='button'>
                            Acessar Sistema
                        </a>
                    </div>
                    
                    <p style='margin-top: 30px; font-style: italic; color: #666;'>
                        Este é um e-mail automático, por favor não responda.
                    </p>
                </div>
                <div class='footer'>
                    <p>Sistema SON &copy; " . date('Y') . " - Todos os direitos reservados</p>
                </div>
            </div>
        </body>
        </html>
    ";
}

// Função para validar CPF
function validarCPF($cpf) {
    $cpf = preg_replace('/[^0-9]/', '', $cpf);
    
    if (strlen($cpf) != 11 || preg_match('/(\d)\1{10}/', $cpf)) {
        return false;
    }

    for ($t = 9; $t < 11; $t++) {
        for ($d = 0, $c = 0; $c < $t; $c++) {
            $d += $cpf[$c] * (($t + 1) - $c);
        }
        $d = ((10 * $d) % 11) % 10;
        if ($cpf[$c] != $d) {
            return false;
        }
    }
    return true;
}

// Função para validar CNPJ
function validarCNPJ($cnpj) {
    $cnpj = preg_replace('/[^0-9]/', '', $cnpj);
    
    if (strlen($cnpj) != 14 || preg_match('/(\d)\1{13}/', $cnpj)) {
        return false;
    }

    for ($i = 0, $j = 5, $soma = 0; $i < 12; $i++) {
        $soma += $cnpj[$i] * $j;
        $j = ($j == 2) ? 9 : $j - 1;
    }
    $resto = $soma % 11;
    if ($cnpj[12] != ($resto < 2 ? 0 : 11 - $resto)) {
        return false;
    }

    for ($i = 0, $j = 6, $soma = 0; $i < 13; $i++) {
        $soma += $cnpj[$i] * $j;
        $j = ($j == 2) ? 9 : $j - 1;
    }
    $resto = $soma % 11;
    return $cnpj[13] == ($resto < 2 ? 0 : 11 - $resto);
}

// Função para obter bandeira do país baseado no código do país do telefone
function obterBandeiraPais($telefone) {
    $telefone = preg_replace('/\D/', '', $telefone);
    
    // Códigos de país mais comuns
    $codigosPais = [
        '55' => 'BR', // Brasil
        '1' => 'US',  // EUA/Canadá
        '54' => 'AR', // Argentina
        '56' => 'CL', // Chile
        '57' => 'CO', // Colômbia
        '52' => 'MX', // México
        '351' => 'PT', // Portugal
        '34' => 'ES', // Espanha
        '39' => 'IT', // Itália
        '33' => 'FR', // França
        '49' => 'DE', // Alemanha
        '44' => 'GB', // Reino Unido
    ];
    
    foreach ($codigosPais as $codigo => $pais) {
        if (strpos($telefone, $codigo) === 0) {
            return strtolower($pais);
        }
    }
    
    return 'unknown';
}

// Função para buscar etapas de um funil
function buscarEtapasFunil($conn, $funilId) {
    $etapas = [];
    if ($funilId) {
        $stmt = $conn->prepare("SELECT id, nome FROM etapas_funis WHERE funil_id = ? ORDER BY ordem");
        $stmt->bind_param("i", $funilId);
        $stmt->execute();
        $result = $stmt->get_result();
        
        while ($etapa = $result->fetch_assoc()) {
            $etapas[$etapa['id']] = $etapa['nome'];
        }
        $stmt->close();
    }
    return $etapas;
}

// CORREÇÃO: Função para buscar responsável por EMAIL (não por nome) COM VALIDAÇÃO DE TENANT
function buscarResponsavelPorEmail($conn, $emailResponsavel, $tenantId) {
    // CORREÇÃO: Validar se o usuário tem e-mail válido e pertence ao mesmo tenant
    $stmt = $conn->prepare("SELECT id, nome, email FROM usuarios WHERE email = ? AND tenant_id = ? AND ativo = 'sim' AND email IS NOT NULL AND email != ''");
    $stmt->bind_param("si", $emailResponsavel, $tenantId);
    $stmt->execute();
    $result = $stmt->get_result();
    
    if ($result->num_rows > 0) {
        $responsavel = $result->fetch_assoc();
        $stmt->close();
        
        // CORREÇÃO ADICIONAL: Validar formato do e-mail
        if (!filter_var($responsavel['email'], FILTER_VALIDATE_EMAIL)) {
            return null; // Retorna null se o e-mail for inválido
        }
        
        return $responsavel;
    }
    $stmt->close();
    return null;
}

// NOVA FUNÇÃO: Criar log detalhado da importação (MODIFICADA PARA RETORNAR DADOS PARA O MODAL)
function criarLogImportacao($dadosImportados, $funilId, $etapaId, $funis, $usuarios) {
    $logContent = "=== LOG DE IMPORTAÇÃO DE CLIENTES ===\n";
    $logContent .= "Data/Hora: " . date('d/m/Y H:i:s') . "\n";
    $logContent .= "Funil: " . ($funis[$funilId] ?? 'Desconhecido') . "\n";
    $logContent .= "Etapa: " . ($etapaId ? 'ID ' . $etapaId : 'Não especificada') . "\n";
    $logContent .= "Total de clientes importados: " . count($dadosImportados) . "\n\n";
    
    $logContent .= "DETALHES DOS CLIENTES IMPORTADOS:\n";
    $logContent .= str_repeat("-", 100) . "\n";
    
    // Preparar dados para o modal
    $dadosModal = [
        'data_hora' => date('d/m/Y H:i:s'),
        'funil' => $funis[$funilId] ?? 'Desconhecido',
        'etapa' => $etapaId ? 'ID ' . $etapaId : 'Não especificada',
        'total_importados' => count($dadosImportados),
        'clientes' => []
    ];
    
    foreach ($dadosImportados as $index => $cliente) {
        $responsavelNome = $usuarios[$cliente['Responsavel']] ?? 'Desconhecido';
        
        $logContent .= "CLIENTE " . ($index + 1) . ":\n";
        $logContent .= "  Nome: " . $cliente['Nome'] . "\n";
        $logContent .= "  Email: " . ($cliente['Email'] ?? 'Não informado') . "\n";
        $logContent .= "  Telefone: " . $cliente['Telefone'] . "\n";
        $logContent .= "  Responsável: " . $responsavelNome . "\n";
        $logContent .= "  Status: Importado com sucesso\n";
        $logContent .= str_repeat("-", 50) . "\n";
        
        // Adicionar dados para o modal
        $dadosModal['clientes'][] = [
            'numero' => $index + 1,
            'nome' => $cliente['Nome'],
            'email' => $cliente['Email'] ?? 'Não informado',
            'telefone' => $cliente['Telefone'],
            'responsavel' => $responsavelNome,
            'status' => 'Importado com sucesso'
        ];
    }
    
    $logContent .= "\n=== FIM DO LOG ===\n\n";
    
    // Salvar em arquivo
    $arquivoLog = 'logs/importacao_clientes_' . date('Y-m-d_H-i-s') . '.log';
    if (!file_exists('logs')) mkdir('logs', 0755, true);
    file_put_contents($arquivoLog, $logContent);
    
    return $dadosModal; // AGORA RETORNA DADOS PARA O MODAL
}

// NOVA FUNÇÃO: Criar dados para modal de erro de importação
function criarDadosErroImportacao($linhasComErro, $totalLinhasProcessadas) {
    return [
        'data_hora' => date('d/m/Y H:i:s'),
        'total_linhas' => $totalLinhasProcessadas,
        'total_erros' => count($linhasComErro),
        'erros' => $linhasComErro
    ];
}

// Exibir mensagem de sucesso se existir
if (isset($_SESSION['mensagem'])) {
    echo '<div style="position: fixed; top: 80px; right: 20px; padding: 10px 20px; background: #2ecc71; color: white; border-radius: 4px; z-index: 2000;">'
       . htmlspecialchars($_SESSION['mensagem'])
       . '</div>';
    
    unset($_SESSION['mensagem']);
    
    echo '<script>
            setTimeout(function() {
                var msgDiv = document.querySelector("div[style*=\'position: fixed\']");
                if (msgDiv) msgDiv.style.display = "none";
            }, 5000);
          </script>';
}

// Buscar origens cadastradas (apenas ativas)
$origens = [];
$stmt_origens = $conn->prepare("SELECT id, nome FROM origens WHERE tenant_id = ? AND ativo = 1 ORDER BY nome");
$stmt_origens->bind_param("i", $_SESSION['tenant_id']);
$stmt_origens->execute();
$result_origens = $stmt_origens->get_result();

if ($result_origens->num_rows > 0) {
    while ($origem = $result_origens->fetch_assoc()) {
        $origens[$origem['id']] = $origem['nome'];
    }
}
$stmt_origens->close();

// Buscar funis cadastrados
$funis = [];
$stmt_funis = $conn->prepare("SELECT id, nome FROM funis WHERE tenant_id = ?");
$stmt_funis->bind_param("i", $_SESSION['tenant_id']);
$stmt_funis->execute();
$result_funis = $stmt_funis->get_result();
while ($funil = $result_funis->fetch_assoc()) {
    $funis[$funil['id']] = $funil['nome'];
}
$stmt_funis->close();

// Buscar funil padrão do tenant
$funilPadrao = null;
$etapaPadrao = null;
$stmt_padrao = $conn->prepare("SELECT funil_id, etapa_funil_id FROM funil_padrao WHERE tenant_id = ?");
$stmt_padrao->bind_param("i", $_SESSION['tenant_id']);
$stmt_padrao->execute();
$result_padrao = $stmt_padrao->get_result();

if ($result_padrao->num_rows > 0) {
    $padrao = $result_padrao->fetch_assoc();
    $funilPadrao = $padrao['funil_id'];
    $etapaPadrao = $padrao['etapa_funil_id'];
}
$stmt_padrao->close();

// Se não há padrão definido, usar o primeiro funil e primeira etapa
if (!$funilPadrao && count($funis) > 0) {
    $funilPadrao = array_key_first($funis);
    $etapasFunil = buscarEtapasFunil($conn, $funilPadrao);
    if (count($etapasFunil) > 0) {
        $etapaPadrao = array_key_first($etapasFunil);
    }
}

// Buscar usuários para o campo responsável (apenas ativos) COM VALIDAÇÃO DE EMAIL E TENANT
$usuarios = [];
$usuarios_email_map = []; // CORREÇÃO: Agora mapear por EMAIL em vez de nome
$stmt_usuarios = $conn->prepare("SELECT id, nome, email FROM usuarios WHERE tenant_id = ? AND ativo = 'sim' AND email IS NOT NULL AND email != ''");
$stmt_usuarios->bind_param("i", $_SESSION['tenant_id']);
$stmt_usuarios->execute();
$result_usuarios = $stmt_usuarios->get_result();
while ($usuario = $result_usuarios->fetch_assoc()) {
    // CORREÇÃO: Validar formato do e-mail antes de incluir na lista
    if (filter_var($usuario['email'], FILTER_VALIDATE_EMAIL)) {
        $usuarios[$usuario['id']] = $usuario['nome'] . ' (' . $usuario['email'] . ')';
        $usuarios_email_map[trim(strtolower($usuario['email']))] = $usuario['id'];
    }
}
$stmt_usuarios->close();

// Processar importação de CSV
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['arquivo_csv'])) {
    try {
        if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
            throw new Exception("Token de segurança inválido");
        }

        if ($_FILES['arquivo_csv']['error'] !== UPLOAD_ERR_OK) {
            throw new Exception("Erro no upload do arquivo");
        }

        $extensao = strtolower(pathinfo($_FILES['arquivo_csv']['name'], PATHINFO_EXTENSION));
        if ($extensao !== 'csv') {
            throw new Exception("Apenas arquivos CSV são permitidos.");
        }

        $arquivo = fopen($_FILES['arquivo_csv']['tmp_name'], 'r');
        if ($arquivo === false) {
            throw new Exception("Não foi possível abrir o arquivo CSV");
        }

        $tenantId = (int) $_SESSION['tenant_id'];
        $usuarioId = (int) $_SESSION['usuario_id'];
        $linhasProcessadas = 0;
        $clientesImportados = 0;
        $erros = [];

        // CORREÇÃO: Obter funil e etapa usando filter_input para maior segurança
        $funilId = filter_input(INPUT_POST, 'funil_id_import', FILTER_VALIDATE_INT);
        $etapaId = filter_input(INPUT_POST, 'etapa_funil_id_import', FILTER_VALIDATE_INT);

        // VALIDAÇÃO: Verificar se funil e etapa foram selecionados
        if ($funilId === null || $funilId <= 0) {
            throw new Exception("Por favor, selecione um funil para a importação.");
        }
        
        if ($etapaId === null || $etapaId <= 0) {
            throw new Exception("Por favor, selecione uma etapa do funil para a importação.");
        }

        // VALIDAÇÃO: Verificar se a etapa pertence ao funil selecionado
        $stmt_validacao = $conn->prepare("SELECT COUNT(*) as count FROM etapas_funis WHERE id = ? AND funil_id = ?");
        $stmt_validacao->bind_param("ii", $etapaId, $funilId);
        $stmt_validacao->execute();
        $result_validacao = $stmt_validacao->get_result()->fetch_assoc();
        $stmt_validacao->close();

        if ($result_validacao['count'] == 0) {
            throw new Exception("A etapa selecionada não pertence ao funil escolhido.");
        }

        // Ignorar cabeçalho
        fgetcsv($arquivo);

        // CORREÇÃO: Array para armazenar todos os dados válidos antes de inserir
        $dadosValidos = [];
        $linhasComErro = [];

        while (($linha = fgetcsv($arquivo)) !== false) {
            $linhasProcessadas++;
            $numeroLinha = $linhasProcessadas + 1; // +1 porque pulamos o cabeçalho
            
            // CORREÇÃO: Validar se a linha tem pelo menos 18 colunas (incluindo o responsável)
            if (count($linha) < 18) {
                $linhasComErro[] = [
                    'linha' => $numeroLinha,
                    'erro' => "Formato inválido. Certifique-se de que o arquivo CSV tem todas as colunas necessárias."
                ];
                continue;
            }
            
            // Validar campos obrigatórios
            if (empty(trim($linha[0]))) {
                $linhasComErro[] = [
                    'linha' => $numeroLinha,
                    'erro' => "Nome do cliente é obrigatório"
                ];
                continue;
            }
            if (empty(trim($linha[2]))) {
                $linhasComErro[] = [
                    'linha' => $numeroLinha,
                    'erro' => "Telefone do cliente é obrigatório"
                ];
                continue;
            }
            
            // CORREÇÃO RIGOROSA: Validar se a coluna do responsável está preenchida
            if (empty(trim($linha[17]))) {
                $linhasComErro[] = [
                    'linha' => $numeroLinha,
                    'erro' => "E-mail do responsável é obrigatório"
                ];
                continue;
            }

            // CORREÇÃO: Validar responsável por EMAIL (não por nome) COM VALIDAÇÃO DE TENANT
            $responsavelId = null;
            $emailResponsavel = trim($linha[17]);
            
            // Validar formato do e-mail primeiro
            if (!filter_var($emailResponsavel, FILTER_VALIDATE_EMAIL)) {
                $linhasComErro[] = [
                    'linha' => $numeroLinha,
                    'erro' => "E-mail do responsável inválido: '$emailResponsavel'"
                ];
                continue;
            }
            
            if (!empty($emailResponsavel)) {
                $emailResponsavelLower = strtolower($emailResponsavel);
                
                if (isset($usuarios_email_map[$emailResponsavelLower])) {
                    $responsavelId = $usuarios_email_map[$emailResponsavelLower];
                } else {
                    // Tentar buscar no banco de dados (busca case-insensitive)
                    $responsavel = buscarResponsavelPorEmail($conn, $emailResponsavel, $tenantId);
                    if ($responsavel) {
                        $responsavelId = $responsavel['id'];
                        // Atualizar o mapa para futuras consultas
                        $usuarios_email_map[strtolower($responsavel['email'])] = $responsavel['id'];
                    } else {
                        $linhasComErro[] = [
                            'linha' => $numeroLinha,
                            'erro' => "Responsável com e-mail '$emailResponsavel' não encontrado no sistema ou não pertence ao seu tenant. Verifique se o e-mail está correto e se o usuário está ativo."
                        ];
                        continue;
                    }
                }
            }

            // Determinar origem
            $origemId = null;
            if (!empty($linha[13])) {
                $origemNome = trim($linha[13]);
                foreach ($origens as $id => $nome) {
                    if (strcasecmp($nome, $origemNome) === 0) {
                        $origemId = $id;
                        break;
                    }
                }
            }

            // Determinar se é Brasil para definir Estado/Província
            $pais = trim($linha[7] ?? 'Brasil');
            $estado = '';
            $provincia = '';
            
            if (strcasecmp($pais, 'Brasil') === 0) {
                $estado = trim($linha[8] ?? '');
            } else {
                $provincia = trim($linha[8] ?? '');
            }

            // Validar CPF/CNPJ se preenchido
            $cpf_cnpj = preg_replace('/\D/', '', $linha[12] ?? '');
            if (!empty($cpf_cnpj)) {
                if (strlen($cpf_cnpj) === 11 && !validarCPF($cpf_cnpj)) {
                    $linhasComErro[] = [
                        'linha' => $numeroLinha,
                        'erro' => "CPF inválido"
                    ];
                    continue;
                } elseif (strlen($cpf_cnpj) === 14 && !validarCNPJ($cpf_cnpj)) {
                    $linhasComErro[] = [
                        'linha' => $numeroLinha,
                        'erro' => "CNPJ inválido"
                    ];
                    continue;
                }
                
                // NOVA VALIDAÇÃO: Verificar se CPF/CNPJ já existe na base
                if (verificarCpfCnpjExistente($conn, $cpf_cnpj, $tenantId)) {
                    $linhasComErro[] = [
                        'linha' => $numeroLinha,
                        'erro' => "CPF/CNPJ '$cpf_cnpj' já existe na base de dados"
                    ];
                    continue;
                }
            }

            // CORREÇÃO: Armazenar dados válidos para inserção posterior
            $dadosValidos[] = [
                'linha' => $numeroLinha,
                'dados' => [
                    'Nome' => trim($linha[0] ?? ''),
                    'Email' => filter_var($linha[1] ?? '', FILTER_VALIDATE_EMAIL) ?: null,
                    'Telefone' => preg_replace('/\D/', '', $linha[2] ?? ''),
                    'Telefone2' => preg_replace('/\D/', '', $linha[3] ?? ''),
                    'Celular' => preg_replace('/\D/', '', $linha[4] ?? ''),
                    'Endereco' => trim($linha[5] ?? ''),
                    'Cidade' => trim($linha[6] ?? ''),
                    'Pais' => $pais,
                    'Estado' => $estado,
                    'Provincia' => $provincia,
                    'Bairro' => trim($linha[9] ?? ''),
                    'Complemento' => trim($linha[10] ?? ''),
                    'CEP' => preg_replace('/\D/', '', $linha[11] ?? ''),
                    'CPF_CNPJ' => $cpf_cnpj,
                    'Origem' => $origemId,
                    'Instagram' => trim($linha[14] ?? ''),
                    'Linkedin' => trim($linha[15] ?? ''),
                    'Observacoes' => trim($linha[16] ?? ''),
                    'Responsavel' => $responsavelId,
                    'status' => 1,
                    'funil' => $funilId,
                    'etapa_funil_id' => $etapaId
                ]
            ];
        }

        fclose($arquivo);

        // CORREÇÃO RIGOROSA: Se houver ERROS, NÃO importar NADA e mostrar modal de erro
        if (!empty($linhasComErro)) {
            // Criar dados para o modal de erro
            $dadosErroModal = criarDadosErroImportacao($linhasComErro, $linhasProcessadas);
            
            $_SESSION['erro_importacao'] = $dadosErroModal;
            $_SESSION['importacao_erro'] = true;
            
            header("Location: cadastrar_cliente.php");
            exit();
        }

        // CORREÇÃO: Se nenhuma linha foi processada, lançar exceção
        if ($linhasProcessadas === 0) {
            throw new Exception("Nenhum cliente foi importado. Verifique se o arquivo CSV está no formato correto e contém dados.");
        }

        // CORREÇÃO: Se chegou aqui, não há erros - processar todas as inserções
        $dadosImportadosComSucesso = [];
        
        foreach ($dadosValidos as $item) {
            $dados = $item['dados'];
            $numeroLinha = $item['linha'];

            $sql = "INSERT INTO clientes (
                        Nome_Cliente, Email, Telefone, Telefone2, Celular, Endereco, Cidade, Pais, Estado, 
                        Provincia, Bairro, Complemento, CEP, CPF_CNPJ, origem_id, Instagram, Linkedin, Observacoes, status, tenant_id, usuario_cadastro, Funil, etapa_funil_id, responsavel
                    ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

            $stmt = $conn->prepare($sql);
            $result = $stmt->execute([
                $dados['Nome'], $dados['Email'], $dados['Telefone'], $dados['Telefone2'],
                $dados['Celular'], $dados['Endereco'], $dados['Cidade'], $dados['Pais'], $dados['Estado'],
                $dados['Provincia'], $dados['Bairro'], $dados['Complemento'], $dados['CEP'], $dados['CPF_CNPJ'],
                $dados['Origem'], $dados['Instagram'], $dados['Linkedin'], $dados['Observacoes'],
                $dados['status'], $tenantId, $usuarioId, $dados['funil'], $dados['etapa_funil_id'], $dados['Responsavel']
            ]);

            if ($result) {
                $clienteId = $conn->insert_id;
                $clientesImportados++;
                
        // === AQUI VOCÊ DEVE COLOCAR O FLUXO AUTOMATIZADO ===
        require_once 'verificador_fluxos_automatizados.php';
        
        // Verificar fluxos para cliente criado
$atividades_criadas = executarFluxosClienteCriado($conn, $clienteId, 'cadastro_importacao');
        
        if ($atividades_criadas > 0) {
            error_log("📅 Criadas $atividades_criadas atividades automáticas para cliente importado ID: $clienteId");
        }
        // === FIM DO FLUXO AUTOMATIZADO ===

                // Armazenar dados para o log
                $dadosImportadosComSucesso[] = $dados;
                
                // NOVO: Registrar log na tabela cliente_logs
                registrarLogCliente($conn, $clienteId, 'Cadastro Via Importação', 
                    "Cliente cadastrado via importação CSV. Nome: {$dados['Nome']}, Responsável ID: {$dados['Responsavel']}");
                
                // Enviar e-mail para o responsável
                enviarEmailResponsavel($conn, $clienteId, $dados['Responsavel'], $dados['Nome']);
            } else {
                // Se houver erro na inserção, adicionar aos erros
                $linhasComErro[] = [
                    'linha' => $numeroLinha,
                    'erro' => "Erro ao inserir no banco de dados - " . $stmt->error
                ];
            }
        }

        // CORREÇÃO: Se houve erros durante a inserção, fazer rollback mental (não temos transação)
        if (!empty($linhasComErro)) {
            $dadosErroModal = criarDadosErroImportacao($linhasComErro, $linhasProcessadas);
            
            $_SESSION['erro_importacao'] = $dadosErroModal;
            $_SESSION['importacao_erro'] = true;
            
            header("Location: cadastrar_cliente.php");
            exit();
        }

        // NOVO: Criar log detalhado da importação e armazenar dados para o modal
        $dadosLogModal = criarLogImportacao($dadosImportadosComSucesso, $funilId, $etapaId, $funis, $usuarios);
        
        registrarLog('Importação de clientes via CSV', "Total: $linhasProcessadas, Importados: $clientesImportados, Erros: 0, Funil: $funilId, Etapa: $etapaId");
        
        // NOVO: Armazenar dados do log na sessão para exibir no modal
        $_SESSION['log_importacao'] = $dadosLogModal;
        $_SESSION['importacao_sucesso'] = true;
        $_SESSION['total_importados'] = $clientesImportados;
        $_SESSION['total_processados'] = $linhasProcessadas;
        
        header("Location: cadastrar_cliente.php");
        exit();

    } catch (Exception $e) {
        registrarLog('Erro ao importar clientes via CSV', $e->getMessage());
        $_SESSION['mensagem'] = $e->getMessage();
        header("Location: cadastrar_cliente.php");
        exit();
    }
}

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

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

        $funilId = isset($_POST['funil_id']) ? (int) $_POST['funil_id'] : null;
        $etapaId = isset($_POST['etapa_funil_id']) ? (int) $_POST['etapa_funil_id'] : null;

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

            if ($res->num_rows > 0) {
                $row = $res->fetch_assoc();
                $funilId = $funilId ?: (int) $row['funil_id'];
                $etapaId = $etapaId ?: (int) $row['etapa_funil_id'];
            } else {
                $stmt = $conn->prepare("SELECT id AS funil_id FROM funis WHERE tenant_id = ? LIMIT 1");
                $stmt->bind_param("i", $tenantId);
                $stmt->execute();
                $funilRes = $stmt->get_result();
                
                if ($funilRes->num_rows > 0) {
                    $funilRow = $funilRes->fetch_assoc();
                    $funilId = (int) $funilRow['funil_id'];
                    
                    $stmt = $conn->prepare("SELECT id AS etapa_funil_id FROM etapas_funis WHERE funil_id = ? ORDER BY ordem ASC LIMIT 1");
                    $stmt->bind_param("i", $funilId);
                    $stmt->execute();
                    $etapaRes = $stmt->get_result();
                    
                    if ($etapaRes->num_rows > 0) {
                        $etapaRow = $etapaRes->fetch_assoc();
                        $etapaId = (int) $etapaRow['etapa_funil_id'];
                    }
                }
            }
            $stmt->close();
        }

        // Determinar se é Brasil para definir Estado/Província
        $pais = trim($_POST['pais'] ?? 'Brasil');
        $estado = '';
        $provincia = '';
        
        if (strcasecmp($pais, 'Brasil') === 0) {
            $estado = trim($_POST['estado'] ?? '');
        } else {
            $provincia = trim($_POST['provincia'] ?? '');
        }

        // Validar CPF/CNPJ se preenchido
        $cpf_cnpj = preg_replace('/\D/', '', $_POST['CPF_CNPJ'] ?? '');
        if (!empty($cpf_cnpj)) {
            if (strlen($cpf_cnpj) === 11 && !validarCPF($cpf_cnpj)) {
                throw new Exception("CPF inválido");
            } elseif (strlen($cpf_cnpj) === 14 && !validarCNPJ($cpf_cnpj)) {
                throw new Exception("CNPJ inválido");
            }
            
            // NOVA VALIDAÇÃO: Verificar se CPF/CNPJ já existe na base
            if (verificarCpfCnpjExistente($conn, $cpf_cnpj, $tenantId)) {
                throw new Exception("CPF/CNPJ '$cpf_cnpj' já existe na base de dados");
            }
        }

        // Validar telefones
        $telefone = preg_replace('/\D/', '', $_POST['telefone'] ?? '');
        if (strlen($telefone) < 10 || strlen($telefone) > 15) {
            throw new Exception("Telefone deve ter entre 10 e 15 dígitos");
        }

        $telefone2 = preg_replace('/\D/', '', $_POST['telefone2'] ?? '');
        if (!empty($telefone2) && (strlen($telefone2) < 10 || strlen($telefone2) > 15)) {
            throw new Exception("Telefone 2 deve ter entre 10 e 15 dígitos");
        }

        $celular = preg_replace('/\D/', '', $_POST['celular'] ?? '');
        if (!empty($celular) && (strlen($celular) < 10 || strlen($celular) > 15)) {
            throw new Exception("Celular deve ter entre 10 e 15 dígitos");
        }

        $dados = [
            'Nome' => trim($_POST['nome'] ?? ''),
            'Email' => filter_var($_POST['email'] ?? '', FILTER_VALIDATE_EMAIL) ?: null,
            'Telefone' => $telefone,
            'Telefone2' => $telefone2,
            'Celular' => $celular,
            'Endereco' => trim($_POST['endereco'] ?? ''),
            'Cidade' => trim($_POST['cidade'] ?? ''),
            'Pais' => $pais,
            'Estado' => $estado,
            'Provincia' => $provincia,
            'Bairro' => trim($_POST['bairro'] ?? ''),
            'Complemento' => trim($_POST['complemento'] ?? ''),
            'CEP' => preg_replace('/\D/', '', $_POST['cep'] ?? ''),
            'CPF_CNPJ' => $cpf_cnpj,
            'Origem' => isset($_POST['origem_id']) ? (int)$_POST['origem_id'] : null,
            'Instagram' => trim($_POST['instagram'] ?? ''),
            'Linkedin' => trim($_POST['linkedin'] ?? ''),
            'Observacoes' => trim($_POST['observacoes'] ?? ''),
            'Responsavel' => isset($_POST['responsavel_id']) ? (int)$_POST['responsavel_id'] : null,
            'status' => 1,
            'funil' => $funilId,
            'etapa_funil_id' => $etapaId
        ];

        if (empty($dados['Nome'])) throw new Exception("O nome do cliente é obrigatório");
        if (empty($dados['Telefone'])) throw new Exception("O telefone do cliente é obrigatório");
        if (empty($dados['Responsavel'])) throw new Exception("O responsável é obrigatório");
        if (empty($dados['funil'])) throw new Exception("O funil é obrigatório");
        if (empty($dados['etapa_funil_id'])) throw new Exception("A etapa do funil é obrigatória");

        $sql = "INSERT INTO clientes (
            Nome_Cliente, Email, Telefone, Telefone2, Celular, Endereco, Cidade, Pais, Estado, 
            Provincia, Bairro, Complemento, CEP, CPF_CNPJ, origem_id, Instagram, Linkedin, Observacoes, 
            status, tenant_id, usuario_cadastro, Funil, etapa_funil_id, responsavel
        ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

        $stmt = $conn->prepare($sql);
        $result = $stmt->execute([
            $dados['Nome'], $dados['Email'], $dados['Telefone'], $dados['Telefone2'],
            $dados['Celular'], $dados['Endereco'], $dados['Cidade'], $dados['Pais'], $dados['Estado'],
            $dados['Provincia'], $dados['Bairro'], $dados['Complemento'], $dados['CEP'], $dados['CPF_CNPJ'],
            $dados['Origem'], $dados['Instagram'], $dados['Linkedin'], $dados['Observacoes'],
            $dados['status'], $tenantId, $usuarioId, $dados['funil'], $dados['etapa_funil_id'], $dados['Responsavel']
        ]);

        if ($result) {
            $clienteId = $conn->insert_id;
           // NO CADASTRO MANUAL - REMOVA A CHAMADA DUPLICADA
if ($result) {
    $clienteId = $conn->insert_id;
    registrarLog('Cadastro de novo cliente', "ID: $clienteId, Nome: {$dados['Nome']}, Responsável: {$usuarios[$dados['Responsavel']]}");
    
    // NOVO: Registrar log na tabela cliente_logs
    registrarLogCliente($conn, $clienteId, 'Cadastro Manual', 
        "Cliente cadastrado manualmente. Nome: {$dados['Nome']}, Email: {$dados['Email']}, Telefone: {$dados['Telefone']}, Responsável ID: {$dados['Responsavel']}");
    
    // === FLUXO AUTOMATIZADO - MANTENHA APENAS ESTA CHAMADA ===
    require_once 'verificador_fluxos_automatizados.php';
    
    // Verificar fluxos para cliente criado - ESPECIFICAR ORIGEM CORRETA
$atividades_criadas = executarFluxosClienteCriado($conn, $clienteId, 'cadastro_manual');
    
    if ($atividades_criadas > 0) {
        error_log("📅 Criadas $atividades_criadas atividades automáticas para novo cliente ID: $clienteId");
    }
    // === FIM DO FLUXO AUTOMATIZADO ===

    // Enviar e-mail para o responsável
    $emailEnviado = enviarEmailResponsavel($conn, $clienteId, $dados['Responsavel'], $dados['Nome']);
    
    if ($emailEnviado) {
        $_SESSION['mensagem'] = 'Cliente cadastrado com sucesso! E-mail enviado ao responsável.';
    } else {
        $_SESSION['mensagem'] = 'Cliente cadastrado com sucesso! (Erro ao enviar e-mail ao responsável)';
    }
    
    header("Location: lista_clientes.php");
    exit();
}
} else {
            throw new Exception("Erro ao cadastrar cliente: " . $stmt->error);
        }
    } catch (Exception $e) {
        registrarLog('Erro ao cadastrar cliente', $e->getMessage());
        $_SESSION['mensagem'] = $e->getMessage();
        header("Location: cadastrar_cliente.php");
        exit();
    }
}

// Gerar template CSV
if (isset($_GET['download_template'])) {
    header('Content-Type: text/csv');
    header('Content-Disposition: attachment; filename="template_importacao_clientes.csv"');
    
    $output = fopen('php://output', 'w');
    
    // Cabeçalho com campos obrigatórios - CORREÇÃO: Agora com EMAIL do responsável
    $cabecalho = [
        'Nome*', 'Email', 'Telefone*', 'Telefone2', 'Celular', 'Endereço', 'Cidade', 
        'País', 'Estado/Província', 'Bairro', 'Complemento', 'CEP', 'CPF/CNPJ', 'Origem (nome)', 
        'Instagram', 'LinkedIn', 'Observações', 'Email do Responsável*'
    ];
    
    fputcsv($output, $cabecalho);
    
    // Linha de exemplo - CORREÇÃO: Agora com EMAIL do responsável
    $exemplo = [
        'João da Silva', 'joao@exemplo.com', '(11) 1234-5678', '(11) 8765-4321', '(11) 98765-4321',
        'Rua Exemplo, 123', 'São Paulo', 'Brasil', 'SP', 'Centro', 'Apto 101', '01001-000', '123.456.789-09',
        'Site Institucional', '@joaosilva', 'linkedin.com/in/joaosilva', 'Cliente preferencial', 'email.do.responsavel@empresa.com'
    ];
    
    fputcsv($output, $exemplo);
    
    fclose($output);
    exit();
}

if (empty($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}

// Estados brasileiros
$estados_brasil = [
    'AC' => 'Acre', 'AL' => 'Alagoas', 'AP' => 'Amapá', 'AM' => 'Amazonas', 'BA' => 'Bahia',
    'CE' => 'Ceará', 'DF' => 'Distrito Federal', 'ES' => 'Espírito Santo', 'GO' => 'Goiás',
    'MA' => 'Maranhão', 'MT' => 'Mato Grosso', 'MS' => 'Mato Grosso do Sul', 'MG' => 'Minas Gerais',
    'PA' => 'Pará', 'PB' => 'Paraíba', 'PR' => 'Paraná', 'PE' => 'Pernambuco', 'PI' => 'Piauí',
    'RJ' => 'Rio de Janeiro', 'RN' => 'Rio Grande do Norte', 'RS' => 'Rio Grande do Sul',
    'RO' => 'Rondônia', 'RR' => 'Roraima', 'SC' => 'Santa Catarina', 'SP' => 'São Paulo',
    'SE' => 'Sergipe', 'TO' => 'Tocantins'
];

// Lista completa de países
$paises = [
    'Afeganistão', 'África do Sul', 'Albânia', 'Alemanha', 'Andorra', 'Angola', 'Antígua e Barbuda', 
    'Arábia Saudita', 'Argélia', 'Argentina', 'Armênia', 'Austrália', 'Áustria', 'Azerbaijão', 
    'Bahamas', 'Bahrein', 'Bangladesh', 'Barbados', 'Bélgica', 'Belize', 'Benin', 'Bielorrússia', 
    'Bolívia', 'Bósnia e Herzegovina', 'Botsuana', 'Brasil', 'Brunei', 'Bulgária', 'Burkina Faso', 
    'Burundi', 'Butão', 'Cabo Verde', 'Camarões', 'Camboja', 'Canadá', 'Catar', 'Cazaquistão', 
    'Chade', 'Chile', 'China', 'Chipre', 'Colômbia', 'Comores', 'Congo', 'Coreia do Norte', 
    'Coreia do Sul', 'Costa do Marfim', 'Costa Rica', 'Croácia', 'Cuba', 'Dinamarca', 'Djibuti', 
    'Dominica', 'Egito', 'El Salvador', 'Emirados Árabes Unidos', 'Equador', 'Eritreia', 'Eslováquia', 
    'Eslovênia', 'Espanha', 'Estados Unidos', 'Estônia', 'Eswatini', 'Etiópia', 'Fiji', 'Filipinas', 
    'Finlândia', 'França', 'Gabão', 'Gâmbia', 'Gana', 'Geórgia', 'Granada', 'Grécia', 'Guatemala', 
    'Guiana', 'Guiné', 'Guiné Equatorial', 'Guiné-Bissau', 'Haiti', 'Honduras', 'Hungria', 'Iêmen', 
    'Ilhas Marshall', 'Ilhas Salomão', 'Índia', 'Indonésia', 'Irã', 'Iraq', 'Irlanda', 'Islândia', 
    'Israel', 'Itália', 'Jamaica', 'Japão', 'Jordânia', 'Kiribati', 'Kuwait', 'Laos', 'Lesoto', 
    'Letônia', 'Líbano', 'Libéria', 'Líbia', 'Liechtenstein', 'Lituânia', 'Luxemburgo', 'Macedônia do Norte', 
    'Madagáscar', 'Malásia', 'Malaui', 'Maldivas', 'Mali', 'Malta', 'Marrocos', 'Maurícia', 'Mauritânia', 
    'México', 'Mianmar', 'Micronésia', 'Moçambique', 'Moldávia', 'Mônaco', 'Mongólia', 'Montenegro', 
    'Namíbia', 'Nauru', 'Nepal', 'Nicarágua', 'Níger', 'Nigéria', 'Noruega', 'Nova Zelândia', 'Omã', 
    'Países Baixos', 'Palau', 'Panamá', 'Papua-Nova Guiné', 'Paquistão', 'Paraguai', 'Peru', 'Polônia', 
    'Portugal', 'Quênia', 'Quirguistão', 'Reino Unido', 'República Centro-Africana', 'República Checa', 
    'República Democrática do Congo', 'República Dominicana', 'Romênia', 'Ruanda', 'Rússia', 'Samoa', 
    'San Marino', 'Santa Lúcia', 'São Cristóvão e Névis', 'São Tomé e Príncipe', 'São Vicente e Granadinas', 
    'Seicheles', 'Senegal', 'Serra Leoa', 'Sérvia', 'Singapura', 'Síria', 'Somália', 'Sri Lanka', 
    'Sudão', 'Sudão do Sul', 'Suécia', 'Suíça', 'Suriname', 'Tailândia', 'Taiwan', 'Tajiquistão', 
    'Tanzânia', 'Timor-Leste', 'Togo', 'Tonga', 'Trinidad e Tobago', 'Tunísia', 'Turcomenistão', 
    'Turquia', 'Tuvalu', 'Ucrânia', 'Uganda', 'Uruguai', 'Uzbequistão', 'Vanuatu', 'Vaticano', 
    'Venezuela', 'Vietnã', 'Zâmbia', 'Zimbábue'
];
sort($paises); // Ordenar alfabeticamente
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
    <link rel="icon" type="image/png" sizes="16x16" href="/favicon_io/favicon-16x16.png">
    <link rel="icon" type="image/png" sizes="32x32" href="/favicon_io/favicon-32x32.png">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>SON - Cadastrar Cliente</title>
    <meta name="csrf-token" content="<?php echo $_SESSION['csrf_token']; ?>">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.5.0/css/flag-icon.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: 40px;
            margin-right: 15px;
        }
        
        .header-fixed h2 {
            margin: 0;
            flex-grow: 1;
            text-align: center;
        }
        
        .sidebar {
            position: fixed;
            left: 0;
            top: 70px;
            height: calc(100vh - 70px);
            width: 60px;
            background: white;
            box-shadow: 2px 0 5px rgba(0,0,0,0.1);
            z-index: 999;
            transition: width 0.3s ease;
            overflow-x: hidden;
        }
        
        .sidebar:hover {
            width: 250px;
        }
        
        .sidebar ul {
            list-style: none;
            padding: 0;
            margin: 0;
        }
        
        .sidebar li {
            padding: 0;
            margin: 0;
        }
        
        .sidebar a {
            display: flex;
            align-items: center;
            padding: 15px 20px;
            text-decoration: none;
            color: #333;
            white-space: nowrap;
        }
        
        .sidebar a:hover {
            background-color: #f0f0f0;
        }
        
        .sidebar i {
            margin-right: 15px;
            min-width: 20px;
            text-align: center;
        }
        
        .sidebar span {
            display: none;
        }
        
        .sidebar:hover span {
            display: inline;
        }
        
        .main-content {
            margin-left: 60px;
            padding: 30px;
            transition: margin-left 0.3s ease;
            position: relative;
            z-index: 1;
            background-color: #f5f5f5;
            min-height: calc(5vh - 20px);
        }
        
        .form-container {
            background: white;
            padding: 20px;
            border-radius: 8px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
            max-width: 1300px;
            margin: 0 auto;
        }
        
        .form-row {
            display: flex;
            flex-wrap: wrap;
            gap: 15px;
            margin-bottom: 15px;
        }
        
        .form-group {
            flex: 1;
            min-width: 200px;
        }
        
        .form-group label {
            display: block;
            margin-bottom: 5px;
            font-weight: bold;
        }
        
        .form-group input, .form-group select, .form-group textarea {
            width: 100%;
            padding: 8px;
            border: 1px solid #ddd;
            border-radius: 4px;
            box-sizing: border-box;
        }
        
        .form-group textarea {
            height: 100px;
            resize: vertical;
        }
        
        .btn {
            padding: 10px 20px;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            font-weight: bold;
            margin-right: 10px;
        }
        
        .btn-primary {
            background-color: #007bff;
            color: white;
        }
        
        .btn-secondary {
            background-color: #6c757d;
            color: white;
        }
        
        .btn-success {
            background-color: #28a745;
            color: white;
        }
        
        .btn:hover {
            opacity: 0.9;
        }
        
        .form-actions {
            margin-top: 20px;
            text-align: center;
        }
        
        .import-section {
            margin-top: 30px;
            padding: 20px;
            background: #f8f9fa;
            border-radius: 8px;
            border: 1px solid #dee2e6;
        }
        
        .import-section h3 {
            margin-top: 0;
            color: #495057;
        }
        
        .import-actions {
            display: flex;
            gap: 15px;
            margin-top: 15px;
        }
        
        .import-actions .btn {
            flex: 1;
        }
        
        .required::after {
            content: " *";
            color: red;
        }
        
        .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;
        }
        
        .hidden {
            display: none;
        }
        
        .phone-input-container {
            position: relative;
        }
        
        .flag-container {
            position: absolute;
            left: 8px;
            top: 50%;
            transform: translateY(-50%);
            z-index: 2;
        }
        
        .phone-with-flag {
            padding-left: 40px !important;
        }
        
        .error {
            border-color: #dc3545 !important;
        }
        
        .error-message {
            color: #dc3545;
            font-size: 0.875em;
            margin-top: 5px;
        }
        
        /* ESTILO PARA O MODAL DE LOG DE IMPORTAÇÃO */
        .modal-overlay {
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            background: rgba(0, 0, 0, 0.7);
            display: flex;
            justify-content: center;
            align-items: center;
            z-index: 9999;
        }
        
        .modal-content {
            background: white;
            border-radius: 8px;
            box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
            width: 90%;
            max-width: 800px;
            max-height: 90vh;
            overflow: hidden;
            display: flex;
            flex-direction: column;
        }
        
        .modal-header {
            background: linear-gradient(135deg, #007bff, #0056b3);
            color: white;
            padding: 20px;
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        
        .modal-header h3 {
            margin: 0;
            font-size: 1.5em;
        }
        
        .modal-close {
            background: none;
            border: none;
            color: white;
            font-size: 1.5em;
            cursor: pointer;
            padding: 0;
            width: 30px;
            height: 30px;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        
        .modal-body {
            padding: 20px;
            overflow-y: auto;
            flex-grow: 1;
        }
        
        .log-summary {
            background: #f8f9fa;
            border-radius: 6px;
            padding: 15px;
            margin-bottom: 20px;
            border-left: 4px solid #28a745;
        }
        
        .log-summary-error {
            background: #f8f9fa;
            border-radius: 6px;
            padding: 15px;
            margin-bottom: 20px;
            border-left: 4px solid #dc3545;
        }
        
        .log-summary h4 {
            margin-top: 0;
            color: #155724;
        }
        
        .log-summary-error h4 {
            margin-top: 0;
            color: #721c24;
        }
        
        .summary-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
            gap: 15px;
            margin-top: 10px;
        }
        
        .summary-item {
            display: flex;
            flex-direction: column;
        }
        
        .summary-label {
            font-size: 0.9em;
            color: #6c757d;
            margin-bottom: 5px;
        }
        
        .summary-value {
            font-size: 1.1em;
            font-weight: bold;
            color: #155724;
        }
        
        .summary-value-error {
            font-size: 1.1em;
            font-weight: bold;
            color: #721c24;
        }
        
        .clientes-list, .erros-list {
            margin-top: 20px;
        }
        
        .clientes-list h4, .erros-list h4 {
            margin-bottom: 15px;
            color: #495057;
            border-bottom: 2px solid #e9ecef;
            padding-bottom: 8px;
        }
        
        .cliente-item, .erro-item {
            background: white;
            border: 1px solid #e9ecef;
            border-radius: 6px;
            padding: 15px;
            margin-bottom: 10px;
            transition: box-shadow 0.2s;
        }
        
        .erro-item {
            border-left: 4px solid #dc3545;
        }
        
        .cliente-item:hover, .erro-item:hover {
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
        }
        
        .cliente-header, .erro-header {
            display: flex;
            justify-content: space-between;
            align-items: flex-start;
            margin-bottom: 10px;
        }
        
        .cliente-nome {
            font-weight: bold;
            color: #007bff;
            font-size: 1.1em;
        }
        
        .erro-linha {
            font-weight: bold;
            color: #dc3545;
            font-size: 1.1em;
        }
        
        .cliente-status {
            background: #28a745;
            color: white;
            padding: 4px 8px;
            border-radius: 12px;
            font-size: 0.8em;
            font-weight: bold;
        }
        
        .erro-tipo {
            background: #dc3545;
            color: white;
            padding: 4px 8px;
            border-radius: 12px;
            font-size: 0.8em;
            font-weight: bold;
        }
        
        .cliente-details, .erro-details {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
            gap: 10px;
            font-size: 0.9em;
        }
        
        .cliente-detail, .erro-detail {
            display: flex;
            flex-direction: column;
        }
        
        .detail-label {
            color: #6c757d;
            font-size: 0.8em;
            margin-bottom: 2px;
        }
        
        .detail-value {
            color: #495057;
        }
        
        .erro-descricao {
            color: #721c24;
            font-weight: 500;
        }
        
        .modal-footer {
            padding: 15px 20px;
            background: #f8f9fa;
            border-top: 1px solid #dee2e6;
            display: flex;
            justify-content: flex-end;
            gap: 10px;
        }
        
        .btn-modal {
            padding: 8px 16px;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            font-weight: bold;
        }
        
        .btn-modal-primary {
            background: #007bff;
            color: white;
        }
        
        .btn-modal-secondary {
            background: #6c757d;
            color: white;
        }
        
        .btn-modal-danger {
            background: #dc3545;
            color: white;
        }
        
        .empty-state {
            text-align: center;
            padding: 40px 20px;
            color: #6c757d;
        }
        
        .empty-state i {
            font-size: 3em;
            margin-bottom: 15px;
            color: #dee2e6;
        }
        
        @media (max-width: 768px) {
            .form-group {
                min-width: 100%;
            }
            
            .sidebar {
                width: 0;
            }
            
            .sidebar:hover {
                width: 200px;
            }
            
            .main-content {
                margin-left: 0;
                padding: 80px 15px 15px 15px;
            }
            
            .summary-grid {
                grid-template-columns: 1fr;
            }
            
            .cliente-details, .erro-details {
                grid-template-columns: 1fr;
            }
        }
    </style>
</head>
<body>

  <?php include 'menu_lateral.php'; ?>
    
  <div class="main-content">
    <div class="form-container">
      <form method="POST" action="" id="formCliente">
        <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
        
        <div class="form-row">
          <div class="form-group">
            <label for="nome" class="required">Nome do Cliente</label>
            <input type="text" id="nome" name="nome" required>
          </div>
          <div class="form-group">
            <label for="email">Email</label>
            <input type="email" id="email" name="email">
          </div>
        </div>
        
        <div class="form-row">
          <div class="form-group">
            <label for="telefone" class="required">Telefone</label>
            <div class="phone-input-container">
              <div class="flag-container">
                <span id="telefone-flag" class="flag-icon flag-icon-br"></span>
              </div>
              <input type="text" id="telefone" name="telefone" class="phone-with-flag" required>
            </div>
            <div id="telefone-error" class="error-message"></div>
          </div>
          <div class="form-group">
            <label for="telefone2">Telefone 2</label>
            <div class="phone-input-container">
              <div class="flag-container">
                <span id="telefone2-flag" class="flag-icon flag-icon-br"></span>
              </div>
              <input type="text" id="telefone2" name="telefone2" class="phone-with-flag">
            </div>
            <div id="telefone2-error" class="error-message"></div>
          </div>
          <div class="form-group">
            <label for="celular">Celular</label>
            <div class="phone-input-container">
              <div class="flag-container">
                <span id="celular-flag" class="flag-icon flag-icon-br"></span>
              </div>
              <input type="text" id="celular" name="celular" class="phone-with-flag">
            </div>
            <div id="celular-error" class="error-message"></div>
          </div>
        </div>
        
        <div class="form-row">
          <div class="form-group">
            <label for="endereco">Endereço</label>
            <input type="text" id="endereco" name="endereco">
          </div>
          <div class="form-group">
            <label for="cidade">Cidade</label>
            <input type="text" id="cidade" name="cidade">
          </div>
        </div>
        
        <div class="form-row">
          <div class="form-group">
            <label for="pais">País</label>
            <select id="pais" name="pais">
              <option value="Brasil" selected>Brasil</option>
              <?php foreach ($paises as $pais): ?>
                <?php if ($pais !== 'Brasil'): ?>
                  <option value="<?php echo htmlspecialchars($pais); ?>"><?php echo htmlspecialchars($pais); ?></option>
                <?php endif; ?>
              <?php endforeach; ?>
            </select>
          </div>
          <div class="form-group" id="estado-group">
            <label for="estado">Estado</label>
            <select id="estado" name="estado">
              <option value="">Selecione um estado</option>
              <?php foreach ($estados_brasil as $sigla => $nome): ?>
                <option value="<?php echo htmlspecialchars($sigla); ?>">
                  <?php echo htmlspecialchars($sigla); ?> - <?php echo htmlspecialchars($nome); ?>
                </option>
              <?php endforeach; ?>
            </select>
          </div>
          <div class="form-group hidden" id="provincia-group">
            <label for="provincia">Província</label>
            <input type="text" id="provincia" name="provincia" placeholder="Digite a província">
          </div>
        </div>
        
        <div class="form-row">
          <div class="form-group">
            <label for="bairro">Bairro</label>
            <input type="text" id="bairro" name="bairro">
          </div>
          <div class="form-group">
            <label for="complemento">Complemento</label>
            <input type="text" id="complemento" name="complemento">
          </div>
          <div class="form-group">
            <label for="cep">CEP</label>
            <input type="text" id="cep" name="cep">
          </div>
        </div>
        
        <div class="form-row">
          <div class="form-group">
            <label for="CPF_CNPJ">CPF/CNPJ</label>
            <input type="text" id="CPF_CNPJ" name="CPF_CNPJ">
            <div id="cpf-cnpj-error" class="error-message"></div>
          </div>
          <div class="form-group">
            <label for="origem_id">Origem</label>
            <select id="origem_id" name="origem_id">
              <option value="">Selecione uma origem</option>
              <?php foreach ($origens as $id => $nome): ?>
                <option value="<?php echo $id; ?>"><?php echo htmlspecialchars($nome); ?></option>
              <?php endforeach; ?>
            </select>
          </div>
        </div>
        
        <div class="form-row">
          <div class="form-group">
            <label for="instagram">Instagram</label>
            <input type="text" id="instagram" name="instagram">
          </div>
          <div class="form-group">
            <label for="linkedin">LinkedIn</label>
            <input type="text" id="linkedin" name="linkedin">
          </div>
        </div>
        
        <div class="form-row">
          <div class="form-group">
            <label for="observacoes">Observações</label>
            <textarea id="observacoes" name="observacoes"></textarea>
          </div>
        </div>

        <!-- CAMPOS ADICIONADOS: FUNIL E ETAPA DO FUNIL -->
        <div class="form-row">
          <div class="form-group">
            <label for="funil_id" class="required">Funil</label>
            <select id="funil_id" name="funil_id" required>
              <option value="">Selecione um funil</option>
              <?php foreach ($funis as $id => $nome): ?>
                <option value="<?php echo $id; ?>" <?php echo ($id == $funilPadrao) ? 'selected' : ''; ?>>
                  <?php echo htmlspecialchars($nome); ?>
                </option>
              <?php endforeach; ?>
            </select>
          </div>
          <div class="form-group">
            <label for="etapa_funil_id" class="required">Etapa do Funil</label>
            <select id="etapa_funil_id" name="etapa_funil_id" required>
              <option value="">Selecione primeiro o funil</option>
              <?php 
              if ($funilPadrao) {
                  $etapas = buscarEtapasFunil($conn, $funilPadrao);
                  foreach ($etapas as $id => $nome): ?>
                    <option value="<?php echo $id; ?>" <?php echo ($id == $etapaPadrao) ? 'selected' : ''; ?>>
                      <?php echo htmlspecialchars($nome); ?>
                    </option>
                  <?php endforeach;
              } ?>
            </select>
          </div>
        </div>
        
        <div class="form-row">
          <div class="form-group">
            <label for="responsavel_id" class="required">Responsável</label>
            <select id="responsavel_id" name="responsavel_id" required>
              <option value="">Selecione um responsável</option>
              <?php foreach ($usuarios as $id => $nome): ?>
                <option value="<?php echo $id; ?>"><?php echo htmlspecialchars($nome); ?></option>
              <?php endforeach; ?>
            </select>
          </div>
        </div>
        
        <div class="form-actions">
          <button type="submit" class="btn btn-primary">Cadastrar Cliente</button>
          <a href="lista_clientes.php" class="btn btn-secondary">Voltar para Lista</a>
        </div>
      </form>
      
      <div class="import-section">
        <h3>Importar Clientes via CSV</h3>
        <p>Faça o upload de um arquivo CSV para importar múltiplos clientes de uma vez.</p>
        
        <!-- CAMPOS ADICIONADOS: FUNIL E ETAPA PARA IMPORTAÇÃO -->
        <div class="form-row">
          <div class="form-group">
            <label for="funil_id_import" class="required">Funil para Importação</label>
            <select id="funil_id_import" name="funil_id_import" required>
              <option value="">Selecione um funil</option>
              <?php foreach ($funis as $id => $nome): ?>
                <option value="<?php echo $id; ?>" <?php echo ($id == $funilPadrao) ? 'selected' : ''; ?>>
                  <?php echo htmlspecialchars($nome); ?>
                </option>
              <?php endforeach; ?>
            </select>
          </div>
          <div class="form-group">
            <label for="etapa_funil_id_import" class="required">Etapa do Funil para Importação</label>
            <select id="etapa_funil_id_import" name="etapa_funil_id_import" required>
              <option value="">Selecione primeiro o funil</option>
              <?php 
              if ($funilPadrao) {
                  $etapas = buscarEtapasFunil($conn, $funilPadrao);
                  foreach ($etapas as $id => $nome): ?>
                    <option value="<?php echo $id; ?>" <?php echo ($id == $etapaPadrao) ? 'selected' : ''; ?>>
                      <?php echo htmlspecialchars($nome); ?>
                    </option>
                  <?php endforeach;
              } ?>
            </select>
          </div>
        </div>
        
        <div class="import-actions">
          <a href="?download_template=1" class="btn btn-success">
            <i class="fas fa-download"></i> Baixar Template CSV
          </a>
          
          <form method="POST" action="" enctype="multipart/form-data" id="formImportacao" style="flex: 1; display: flex; gap: 10px;">
            <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
            <!-- CAMPOS HIDDEN PARA CAPTURAR OS VALORES DOS SELECTS -->
            <input type="hidden" id="funil_id_import_hidden" name="funil_id_import">
            <input type="hidden" id="etapa_funil_id_import_hidden" name="etapa_funil_id_import">
            
            <input type="file" name="arquivo_csv" accept=".csv" required style="flex: 1; padding: 8px; border: 1px solid #ddd; border-radius: 4px;">
            <button type="submit" class="btn btn-primary">
              <i class="fas fa-upload"></i> Importar CSV
            </button>
          </form>
        </div>
        
        <!-- CORREÇÃO: Informações atualizadas sobre a validação do responsável -->
        <div style="margin-top: 15px; padding: 15px; background: #fff3cd; border: 1px solid #ffeaa7; border-radius: 4px;">
          <h4 style="margin-top: 0; color: #856404;">⚠️ Importante:</h4>
          <p style="margin-bottom: 10px; color: #856404;">
            <strong>O campo "Email do Responsável" é obrigatório em todas as linhas do CSV.</strong>
          </p>
          <p style="margin-bottom: 0; color: #856404;">
            Certifique-se de que o e-mail do responsável existe no sistema e pertence ao seu tenant.
            A importação será <strong>cancelada completamente</strong> se houver qualquer erro de validação.
          </p>
        </div>
      </div>
    </div>
  </div>

  <!-- MODAL DE LOG DE IMPORTAÇÃO BEM SUCEDIDA -->
  <?php if (isset($_SESSION['importacao_sucesso']) && $_SESSION['importacao_sucesso'] && isset($_SESSION['log_importacao'])): ?>
  <div class="modal-overlay" id="modalLogImportacao">
    <div class="modal-content">
      <div class="modal-header">
        <h3><i class="fas fa-file-import"></i> Log de Importação</h3>
        <button type="button" class="modal-close" onclick="fecharModal()">
          <i class="fas fa-times"></i>
        </button>
      </div>
      
      <div class="modal-body">
        <div class="log-summary">
          <h4><i class="fas fa-check-circle"></i> Importação Concluída com Sucesso!</h4>
          <div class="summary-grid">
            <div class="summary-item">
              <span class="summary-label">Data/Hora:</span>
              <span class="summary-value"><?php echo htmlspecialchars($_SESSION['log_importacao']['data_hora']); ?></span>
            </div>
            <div class="summary-item">
              <span class="summary-label">Funil:</span>
              <span class="summary-value"><?php echo htmlspecialchars($_SESSION['log_importacao']['funil']); ?></span>
            </div>
            <div class="summary-item">
              <span class="summary-label">Etapa:</span>
              <span class="summary-value"><?php echo htmlspecialchars($_SESSION['log_importacao']['etapa']); ?></span>
            </div>
            <div class="summary-item">
              <span class="summary-label">Total Importado:</span>
              <span class="summary-value"><?php echo $_SESSION['total_importados']; ?> clientes</span>
            </div>
            <div class="summary-item">
              <span class="summary-label">Processados:</span>
              <span class="summary-value"><?php echo $_SESSION['total_processados']; ?> linhas</span>
            </div>
            <div class="summary-item">
              <span class="summary-label">Status:</span>
              <span class="summary-value" style="color: #28a745;">Concluído</span>
            </div>
          </div>
        </div>
        
        <div class="clientes-list">
          <h4><i class="fas fa-users"></i> Clientes Importados (<?php echo count($_SESSION['log_importacao']['clientes']); ?>)</h4>
          
          <?php if (!empty($_SESSION['log_importacao']['clientes'])): ?>
            <?php foreach ($_SESSION['log_importacao']['clientes'] as $cliente): ?>
              <div class="cliente-item">
                <div class="cliente-header">
                  <span class="cliente-nome"><?php echo htmlspecialchars($cliente['nome']); ?></span>
                  <span class="cliente-status"><?php echo htmlspecialchars($cliente['status']); ?></span>
                </div>
                <div class="cliente-details">
                  <div class="cliente-detail">
                    <span class="detail-label">Email:</span>
                    <span class="detail-value"><?php echo htmlspecialchars($cliente['email']); ?></span>
                  </div>
                  <div class="cliente-detail">
                    <span class="detail-label">Telefone:</span>
                    <span class="detail-value"><?php echo htmlspecialchars($cliente['telefone']); ?></span>
                  </div>
                  <div class="cliente-detail">
                    <span class="detail-label">Responsável:</span>
                    <span class="detail-value"><?php echo htmlspecialchars($cliente['responsavel']); ?></span>
                  </div>
                </div>
              </div>
            <?php endforeach; ?>
          <?php else: ?>
            <div class="empty-state">
              <i class="fas fa-users"></i>
              <p>Nenhum cliente foi importado.</p>
            </div>
          <?php endif; ?>
        </div>
      </div>
      
      <div class="modal-footer">
        <button type="button" class="btn-modal btn-modal-secondary" onclick="fecharModal()">
          <i class="fas fa-times"></i> Fechar
        </button>
        <button type="button" class="btn-modal btn-modal-primary" onclick="irParaListaClientes()">
          <i class="fas fa-list"></i> Ver Lista de Clientes
        </button>
      </div>
    </div>
  </div>
  <?php 
    // Limpar dados da sessão após exibir o modal
    unset($_SESSION['importacao_sucesso']);
    unset($_SESSION['log_importacao']);
    unset($_SESSION['total_importados']);
    unset($_SESSION['total_processados']);
  ?>
  <?php endif; ?>

  <!-- NOVO: MODAL DE ERRO DE IMPORTAÇÃO -->
  <?php if (isset($_SESSION['importacao_erro']) && $_SESSION['importacao_erro'] && isset($_SESSION['erro_importacao'])): ?>
  <div class="modal-overlay" id="modalErroImportacao">
    <div class="modal-content">
      <div class="modal-header" style="background: linear-gradient(135deg, #dc3545, #c82333);">
        <h3><i class="fas fa-exclamation-triangle"></i> Erros na Importação</h3>
        <button type="button" class="modal-close" onclick="fecharModalErro()">
          <i class="fas fa-times"></i>
        </button>
      </div>
      
      <div class="modal-body">
        <div class="log-summary-error">
          <h4><i class="fas fa-times-circle"></i> Importação Cancelada!</h4>
          <div class="summary-grid">
            <div class="summary-item">
              <span class="summary-label">Data/Hora:</span>
              <span class="summary-value-error"><?php echo htmlspecialchars($_SESSION['erro_importacao']['data_hora']); ?></span>
            </div>
            <div class="summary-item">
              <span class="summary-label">Total de Linhas:</span>
              <span class="summary-value-error"><?php echo $_SESSION['erro_importacao']['total_linhas']; ?> linhas</span>
            </div>
            <div class="summary-item">
              <span class="summary-label">Erros Encontrados:</span>
              <span class="summary-value-error"><?php echo $_SESSION['erro_importacao']['total_erros']; ?> erros</span>
            </div>
            <div class="summary-item">
              <span class="summary-label">Status:</span>
              <span class="summary-value-error" style="color: #dc3545;">Falhou</span>
            </div>
          </div>
          <p style="margin-top: 15px; color: #721c24; font-style: italic;">
            <i class="fas fa-info-circle"></i> Corrija os erros listados abaixo e tente novamente. Nenhum cliente foi importado.
          </p>
        </div>
        
        <div class="erros-list">
          <h4><i class="fas fa-exclamation-circle"></i> Detalhes dos Erros (<?php echo count($_SESSION['erro_importacao']['erros']); ?>)</h4>
          
          <?php if (!empty($_SESSION['erro_importacao']['erros'])): ?>
            <?php foreach ($_SESSION['erro_importacao']['erros'] as $erro): ?>
              <div class="erro-item">
                <div class="erro-header">
                  <span class="erro-linha">Linha <?php echo $erro['linha']; ?></span>
                  <span class="erro-tipo">Erro</span>
                </div>
                <div class="erro-details">
                  <div class="erro-detail">
                    <span class="detail-label">Descrição do Erro:</span>
                    <span class="erro-descricao"><?php echo htmlspecialchars($erro['erro']); ?></span>
                  </div>
                </div>
              </div>
            <?php endforeach; ?>
          <?php else: ?>
            <div class="empty-state">
              <i class="fas fa-bug"></i>
              <p>Nenhum erro detalhado disponível.</p>
            </div>
          <?php endif; ?>
        </div>
      </div>
      
      <div class="modal-footer">
        <button type="button" class="btn-modal btn-modal-secondary" onclick="fecharModalErro()">
          <i class="fas fa-times"></i> Fechar
        </button>
        <button type="button" class="btn-modal btn-modal-danger" onclick="baixarTemplate()">
          <i class="fas fa-download"></i> Baixar Template Corrigido
        </button>
      </div>
    </div>
  </div>
  <?php 
    // Limpar dados da sessão após exibir o modal
    unset($_SESSION['importacao_erro']);
    unset($_SESSION['erro_importacao']);
  ?>
  <?php endif; ?>

  <script>
    // Função para validar CPF
    function validarCPF(cpf) {
      cpf = cpf.replace(/[^\d]+/g, '');
      if (cpf.length !== 11 || /^(\d)\1+$/.test(cpf)) return false;
      
      let soma = 0;
      for (let i = 0; i < 9; i++) {
        soma += parseInt(cpf.charAt(i)) * (10 - i);
      }
      let resto = 11 - (soma % 11);
      if (resto === 10 || resto === 11) resto = 0;
      if (resto !== parseInt(cpf.charAt(9))) return false;
      
      soma = 0;
      for (let i = 0; i < 10; i++) {
        soma += parseInt(cpf.charAt(i)) * (11 - i);
      }
      resto = 11 - (soma % 11);
      if (resto === 10 || resto === 11) resto = 0;
      if (resto !== parseInt(cpf.charAt(10))) return false;
      
      return true;
    }

    // Função para validar CNPJ
    function validarCNPJ(cnpj) {
      cnpj = cnpj.replace(/[^\d]+/g, '');
      if (cnpj.length !== 14 || /^(\d)\1+$/.test(cnpj)) return false;
      
      let tamanho = cnpj.length - 2;
      let numeros = cnpj.substring(0, tamanho);
      let digitos = cnpj.substring(tamanho);
      let soma = 0;
      let pos = tamanho - 7;
      
      for (let i = tamanho; i >= 1; i--) {
        soma += numeros.charAt(tamanho - i) * pos--;
        if (pos < 2) pos = 9;
      }
      
      let resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
      if (resultado !== parseInt(digitos.charAt(0))) return false;
      
      tamanho = tamanho + 1;
      numeros = cnpj.substring(0, tamanho);
      soma = 0;
      pos = tamanho - 7;
      
      for (let i = tamanho; i >= 1; i--) {
        soma += numeros.charAt(tamanho - i) * pos--;
        if (pos < 2) pos = 9;
      }
      
      resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
      if (resultado !== parseInt(digitos.charAt(1))) return false;
      
      return true;
    }

    // Função para obter bandeira baseada no telefone
    function obterBandeira(telefone) {
      const numero = telefone.replace(/\D/g, '');
      
      const codigos = {
        '55': 'br', // Brasil
        '1': 'us',  // EUA/Canadá
        '54': 'ar', // Argentina
        '56': 'cl', // Chile
        '57': 'co', // Colômbia
        '52': 'mx', // México
        '351': 'pt', // Portugal
        '34': 'es', // Espanha
        '39': 'it', // Itália
        '33': 'fr', // França
        '49': 'de', // Alemanha
        '44': 'gb', // Reino Unido
      };
      
      for (const [codigo, pais] of Object.entries(codigos)) {
        if (numero.startsWith(codigo)) {
          return pais;
        }
      }
      
      return 'unknown';
    }

    // Função para atualizar bandeira
    function atualizarBandeira(input, flagElement) {
      const telefone = input.value.replace(/\D/g, '');
      const pais = obterBandeira(telefone);
      
      // Remove todas as classes de bandeira
      flagElement.className = 'flag-icon';
      
      // Adiciona a classe da bandeira correta
      if (pais !== 'unknown') {
        flagElement.classList.add('flag-icon-' + pais);
      }
    }

    // Função para carregar etapas do funil via AJAX
    function carregarEtapasFunil(funilId, elementoSelect, etapaSelecionada = null) {
        console.log('Carregando etapas para funil:', funilId, 'Elemento:', elementoSelect?.id);
        
        if (!funilId || !elementoSelect) {
            console.error('Funil ID ou elemento select não fornecido');
            return;
        }
        
        // Mostrar loading
        elementoSelect.innerHTML = '<option value="">Carregando etapas...</option>';
        elementoSelect.disabled = true;
        
        fetch(`carregar_etapas.php?funil_id=${funilId}`)
            .then(response => {
                console.log('Status da resposta:', response.status);
                if (!response.ok) {
                    throw new Error('Erro na resposta do servidor: ' + response.status);
                }
                return response.json();
            })
            .then(etapas => {
                console.log('Etapas recebidas:', etapas);
                
                if (!elementoSelect) {
                    console.error('Elemento select não encontrado após carregamento');
                    return;
                }
                
                elementoSelect.innerHTML = '<option value="">Selecione uma etapa</option>';
                
                if (etapas && Array.isArray(etapas) && etapas.length > 0) {
                    etapas.forEach(etapa => {
                        const option = document.createElement('option');
                        option.value = etapa.id;
                        option.textContent = etapa.nome;
                        if (etapaSelecionada && etapa.id == etapaSelecionada) {
                            option.selected = true;
                        }
                        elementoSelect.appendChild(option);
                    });
                    console.log(`${etapas.length} etapas carregadas com sucesso`);
                } else {
                    elementoSelect.innerHTML = '<option value="">Nenhuma etapa encontrada para este funil</option>';
                    console.warn('Nenhuma etapa encontrada para o funil:', funilId);
                }
                elementoSelect.disabled = false;
            })
            .catch(error => {
                console.error('Erro ao carregar etapas:', error);
                if (elementoSelect) {
                    elementoSelect.innerHTML = '<option value="">Erro ao carregar etapas</option>';
                    elementoSelect.disabled = false;
                }
            });
    }

    // Máscaras para telefones e CEP
    function aplicarMascaraTelefone(input) {
      input.addEventListener('input', function(e) {
        let value = e.target.value.replace(/\D/g, '');
        if (value.length <= 10) {
          value = value.replace(/(\d{2})(\d{4})(\d{0,4})/, '($1) $2-$3');
        } else {
          value = value.replace(/(\d{2})(\d{5})(\d{0,4})/, '($1) $2-$3');
        }
        e.target.value = value;
        
        // Atualiza a bandeira
        const flagId = e.target.id + '-flag';
        const flagElement = document.getElementById(flagId);
        if (flagElement) {
          atualizarBandeira(e.target, flagElement);
        }
      });
    }

    function aplicarMascaraCelular(input) {
      input.addEventListener('input', function(e) {
        let value = e.target.value.replace(/\D/g, '');
        if (value.length <= 10) {
          value = value.replace(/(\d{2})(\d{4})(\d{0,4})/, '($1) $2-$3');
        } else {
          value = value.replace(/(\d{2})(\d{1})(\d{4})(\d{0,4})/, '($1) $2 $3-$4');
        }
        e.target.value = value;
        
        // Atualiza a bandeira
        const flagId = e.target.id + '-flag';
        const flagElement = document.getElementById(flagId);
        if (flagElement) {
          atualizarBandeira(e.target, flagElement);
        }
      });
    }

    function aplicarMascaraCEP(input) {
      input.addEventListener('input', function(e) {
        let value = e.target.value.replace(/\D/g, '');
        value = value.replace(/(\d{5})(\d{0,3})/, '$1-$2');
        e.target.value = value;
      });
    }

    function aplicarMascaraCPF_CNPJ(input) {
      input.addEventListener('input', function(e) {
        let value = e.target.value.replace(/\D/g, '');
        if (value.length <= 11) {
          value = value.replace(/(\d{3})(\d{3})(\d{3})(\d{0,2})/, '$1.$2.$3-$4');
        } else {
          value = value.replace(/(\d{2})(\d{3})(\d{3})(\d{4})(\d{0,2})/, '$1.$2.$3/$4-$5');
        }
        e.target.value = value;
      });
    }

    // Validar telefone
    function validarTelefone(telefone) {
      const numero = telefone.replace(/\D/g, '');
      return numero.length >= 10 && numero.length <= 15;
    }

    // Validar CPF/CNPJ
    function validarCPF_CNPJ(valor) {
      const numero = valor.replace(/\D/g, '');
      if (numero.length === 0) return true; // Campo vazio é válido
      if (numero.length === 11) return validarCPF(numero);
      if (numero.length === 14) return validarCNPJ(numero);
      return false;
    }

    // Funções para o modal de log de importação
    function fecharModal() {
        const modal = document.getElementById('modalLogImportacao');
        if (modal) {
            modal.style.display = 'none';
        }
    }

    function fecharModalErro() {
        const modal = document.getElementById('modalErroImportacao');
        if (modal) {
            modal.style.display = 'none';
        }
    }

    function irParaListaClientes() {
        window.location.href = 'lista_clientes.php';
    }

    function baixarTemplate() {
        window.location.href = '?download_template=1';
    }

    // Aplicar máscaras quando o DOM estiver carregado
    document.addEventListener('DOMContentLoaded', function() {
      aplicarMascaraTelefone(document.getElementById('telefone'));
      aplicarMascaraTelefone(document.getElementById('telefone2'));
      aplicarMascaraCelular(document.getElementById('celular'));
      aplicarMascaraCEP(document.getElementById('cep'));
      aplicarMascaraCPF_CNPJ(document.getElementById('CPF_CNPJ'));

      // Alternar entre Estado e Província
      document.getElementById('pais').addEventListener('change', function() {
        const isBrasil = this.value === 'Brasil';
        document.getElementById('estado-group').classList.toggle('hidden', !isBrasil);
        document.getElementById('provincia-group').classList.toggle('hidden', isBrasil);
      });

      // CORREÇÃO: Função para inicializar eventos dos funis
      function inicializarEventosFunil() {
          console.log('Inicializando eventos do funil...');
          
          // Cadastro manual
          const funilSelect = document.getElementById('funil_id');
          const etapaSelect = document.getElementById('etapa_funil_id');
          
          if (funilSelect && etapaSelect) {
              console.log('Eventos do cadastro manual encontrados');
              funilSelect.addEventListener('change', function() {
                  console.log('Funil alterado (manual):', this.value, 'Tipo:', typeof this.value);
                  carregarEtapasFunil(this.value, etapaSelect);
              });
              
              // Carregar etapas iniciais se já houver funil selecionado
              if (funilSelect.value) {
                  const etapaPadrao = '<?php echo $etapaPadrao; ?>';
                  console.log('Carregando etapas iniciais para funil:', funilSelect.value);
                  carregarEtapasFunil(funilSelect.value, etapaSelect, etapaPadrao);
              }
          } else {
              console.log('Elementos do cadastro manual não encontrados');
          }
          
          // Importação
          const funilImportSelect = document.getElementById('funil_id_import');
          const etapaImportSelect = document.getElementById('etapa_funil_id_import');
          
          if (funilImportSelect && etapaImportSelect) {
              console.log('Eventos da importação encontrados');
              funilImportSelect.addEventListener('change', function() {
                  console.log('Funil alterado (import):', this.value, 'Tipo:', typeof this.value);
                  carregarEtapasFunil(this.value, etapaImportSelect);
              });
              
              // Carregar etapas iniciais se já houver funil selecionado
              if (funilImportSelect.value) {
                  const etapaPadrao = '<?php echo $etapaPadrao; ?>';
                  console.log('Carregando etapas iniciais para importação:', funilImportSelect.value);
                  carregarEtapasFunil(funilImportSelect.value, etapaImportSelect, etapaPadrao);
              }
          } else {
              console.log('Elementos da importação não encontrados');
          }
      }

      // Inicializar eventos após um pequeno delay para garantir que o DOM está pronto
      setTimeout(inicializarEventosFunil, 500);

      // CORREÇÃO: Validação do formulário de importação com preenchimento dos campos hidden
      document.getElementById('formImportacao').addEventListener('submit', function(e) {
        const funilImport = document.getElementById('funil_id_import');
        const etapaImport = document.getElementById('etapa_funil_id_import');
        const funilHidden = document.getElementById('funil_id_import_hidden');
        const etapaHidden = document.getElementById('etapa_funil_id_import_hidden');
        
        console.log('Validando importação - Funil:', funilImport.value, 'Etapa:', etapaImport.value);
        
        // Preencher os campos hidden com os valores dos selects
        if (funilHidden && etapaHidden) {
            funilHidden.value = funilImport.value;
            etapaHidden.value = etapaImport.value;
        }
        
        if (!funilImport.value || funilImport.value === '') {
          e.preventDefault();
          Swal.fire({
            icon: 'error',
            title: 'Erro de Validação',
            text: 'Por favor, selecione um funil para a importação.'
          });
          return;
        }
        
        if (!etapaImport.value || etapaImport.value === '') {
          e.preventDefault();
          Swal.fire({
            icon: 'error',
            title: 'Erro de Validação',
            text: 'Por favor, selecione uma etapa do funil para a importação.'
          });
          return;
        }
        
        console.log('Validação de importação passou! Funil:', funilImport.value, 'Etapa:', etapaImport.value);
      });

      // Validação do formulário principal
      document.getElementById('formCliente').addEventListener('submit', function(e) {
        let isValid = true;
        const mensagens = [];

        // Validar nome
        const nome = document.getElementById('nome').value.trim();
        if (!nome) {
          mensagens.push('Por favor, preencha o nome do cliente.');
          isValid = false;
        }

        // Validar telefone
        const telefone = document.getElementById('telefone').value;
        if (!telefone) {
          mensagens.push('Por favor, preencha o telefone do cliente.');
          isValid = false;
        } else if (!validarTelefone(telefone)) {
          mensagens.push('Telefone deve ter entre 10 e 15 dígitos.');
          isValid = false;
        }

        // Validar telefone 2
        const telefone2 = document.getElementById('telefone2').value;
        if (telefone2 && !validarTelefone(telefone2)) {
          mensagens.push('Telefone 2 deve ter entre 10 e 15 dígitos.');
          isValid = false;
        }

        // Validar celular
        const celular = document.getElementById('celular').value;
        if (celular && !validarTelefone(celular)) {
          mensagens.push('Celular deve ter entre 10 e 15 dígitos.');
          isValid = false;
        }

        // Validar CPF/CNPJ
        const cpfCnpj = document.getElementById('CPF_CNPJ').value;
        if (cpfCnpj && !validarCPF_CNPJ(cpfCnpj)) {
          mensagens.push('CPF/CNPJ inválido.');
          isValid = false;
        }

        // Validar funil
        const funil = document.getElementById('funil_id').value;
        if (!funil) {
          mensagens.push('Por favor, selecione um funil.');
          isValid = false;
        }

        // Validar etapa do funil
        const etapaFunil = document.getElementById('etapa_funil_id').value;
        if (!etapaFunil) {
          mensagens.push('Por favor, selecione uma etapa do funil.');
          isValid = false;
        }

        // Validar responsável
        const responsavel = document.getElementById('responsavel_id').value;
        if (!responsavel) {
          mensagens.push('Por favor, selecione um responsável.');
          isValid = false;
        }

        if (!isValid) {
          e.preventDefault();
          Swal.fire({
            icon: 'error',
            title: 'Erro de Validação',
            html: mensagens.join('<br>')
          });
        }
      });

      // Validação em tempo real do CPF/CNPJ
      document.getElementById('CPF_CNPJ').addEventListener('blur', function() {
        const valor = this.value;
        const errorElement = document.getElementById('cpf-cnpj-error');
        
        if (valor && !validarCPF_CNPJ(valor)) {
          this.classList.add('error');
          errorElement.textContent = 'CPF/CNPJ inválido.';
        } else {
          this.classList.remove('error');
          errorElement.textContent = '';
        }
      });

      // Validação em tempo real dos telefones
      ['telefone', 'telefone2', 'celular'].forEach(id => {
        document.getElementById(id).addEventListener('blur', function() {
          const valor = this.value;
          const errorElement = document.getElementById(id + '-error');
          
          if (valor && !validarTelefone(valor)) {
            this.classList.add('error');
            errorElement.textContent = 'Telefone deve ter entre 10 e 15 dígitos.';
          } else {
            this.classList.remove('error');
            errorElement.textContent = '';
          }
        });
      });

      // Fechar modal ao clicar fora dele
      const modal = document.getElementById('modalLogImportacao');
      if (modal) {
          modal.addEventListener('click', function(e) {
              if (e.target === modal) {
                  fecharModal();
              }
          });
      }
      
      const modalErro = document.getElementById('modalErroImportacao');
      if (modalErro) {
          modalErro.addEventListener('click', function(e) {
              if (e.target === modalErro) {
                  fecharModalErro();
              }
          });
      }
      
      // Fechar modal com tecla ESC
      document.addEventListener('keydown', function(e) {
          if (e.key === 'Escape') {
              fecharModal();
              fecharModalErro();
          }
      });
    });
  </script>
</body>
</html>