<?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;
}

// ========== VARIÁVEIS GLOBAIS DO TENANT ==========
$TENANT_ID_ATUAL = (int) $_SESSION['tenant_id'];
$USUARIO_ID_ATUAL = (int) $_SESSION['usuario_id'];

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

// Configurar a conexão para UTF-8
$conn->set_charset("utf8");
$conn->query("SET NAMES 'utf8'");
$conn->query("SET CHARACTER SET utf8");
$conn->query("SET collation_connection = 'utf8_general_ci'");

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

// FUNÇÃO PARA CONVERTER STRINGS PARA UTF-8
function converterParaUtf8($string) {
    if (empty($string)) return $string;
    $encoding = mb_detect_encoding($string, ['UTF-8', 'ISO-8859-1', 'LATIN1'], true);
    if ($encoding && $encoding !== 'UTF-8') {
        return mb_convert_encoding($string, 'UTF-8', $encoding);
    }
    return $string;
}

// FUNÇÃO PARA SANITIZAR DADOS PARA INSERÇÃO NO BANCO
function sanitizarParaBanco($conn, $valor) {
    if ($valor === null) return null;
    if (is_numeric($valor)) return $valor;
    $valor = converterParaUtf8($valor);
    return $conn->real_escape_string($valor);
}

// FUNÇÃO: Verificar se CPF/CNPJ já existe (APENAS NO MESMO TENANT)
function verificarCpfCnpjExistente($conn, $cpfCnpj, $validar = true, $clienteId = null) {
    global $TENANT_ID_ATUAL;
    
    try {
        // Se a validação estiver desativada, retorna false (não existe)
        if (!$validar) return false;
        
        if (empty($TENANT_ID_ATUAL) || !is_numeric($TENANT_ID_ATUAL) || $TENANT_ID_ATUAL <= 0) return false;
        
        $cpfCnpj = preg_replace('/\D/', '', $cpfCnpj);
        if (empty($cpfCnpj)) return false;
        
        if ($clienteId) {
            $sql = "SELECT COUNT(*) as total 
                    FROM clientes 
                    WHERE CPF_CNPJ = ? 
                    AND tenant_id = ? 
                    AND id != ?
                    AND CPF_CNPJ IS NOT NULL 
                    AND CPF_CNPJ != ''";
            $stmt = $conn->prepare($sql);
            $stmt->bind_param("sii", $cpfCnpj, $TENANT_ID_ATUAL, $clienteId);
        } else {
            $sql = "SELECT COUNT(*) as total 
                    FROM clientes 
                    WHERE CPF_CNPJ = ? 
                    AND tenant_id = ? 
                    AND CPF_CNPJ IS NOT NULL 
                    AND CPF_CNPJ != ''";
            $stmt = $conn->prepare($sql);
            $stmt->bind_param("si", $cpfCnpj, $TENANT_ID_ATUAL);
        }
        
        if (!$stmt) return false;
        
        $stmt->execute();
        $result = $stmt->get_result();
        $row = $result->fetch_assoc();
        $stmt->close();
        
        return ($row['total'] > 0);
        
    } catch (Exception $e) {
        registrarLog('ERRO na verificação de CPF/CNPJ', $e->getMessage());
        return false;
    }
}

// FUNÇÃO PARA LIMPAR CPF/CNPJ
function limparCpfCnpj($valor) {
    return preg_replace('/\D/', '', $valor);
}

// FUNÇÃO PARA FORMATAR CPF/CNPJ
function formatarCpfCnpj($valor) {
    $valor = limparCpfCnpj($valor);
    if (strlen($valor) === 11) {
        return preg_replace('/(\d{3})(\d{3})(\d{3})(\d{2})/', '$1.$2.$3-$4', $valor);
    }
    if (strlen($valor) === 14) {
        return preg_replace('/(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})/', '$1.$2.$3/$4-$5', $valor);
    }
    return $valor;
}

// FUNÇÃO: Verificar limite de clientes
function verificarLimiteClientes($conn, $tenantId) {
    try {
        $stmt = $conn->prepare("
            SELECT t.plano_id, p.nome as plano_nome, p.codigo
            FROM tenants t 
            LEFT JOIN planos p ON t.plano_id = p.id 
            WHERE t.id = ?
        ");
        $stmt->bind_param("i", $tenantId);
        $stmt->execute();
        $result = $stmt->get_result();
        
        if ($result->num_rows === 0) {
            return ['excedeu' => false, 'limite' => 0, 'atual' => 0];
        }
        
        $tenant = $result->fetch_assoc();
        $stmt->close();
        
        $stmt = $conn->prepare("SELECT COUNT(*) as total FROM clientes WHERE tenant_id = ?");
        $stmt->bind_param("i", $tenantId);
        $stmt->execute();
        $result = $stmt->get_result();
        $row = $result->fetch_assoc();
        $stmt->close();
        
        $totalClientes = $row['total'];
        
        $limiteClientes = 0;
        switch ($tenant['codigo']) {
            case 'teste': $limiteClientes = 20; break;
            case 'basic': $limiteClientes = 500; break;
            case 'pro': $limiteClientes = 1000; break;
            case 'enterprise': $limiteClientes = 1000000; break;
            default: $limiteClientes = 100;
        }
        
        return [
            'excedeu' => $totalClientes >= $limiteClientes,
            'limite' => $limiteClientes,
            'atual' => $totalClientes,
            'plano_nome' => $tenant['plano_nome'] ?? 'Desconhecido',
        ];
        
    } catch (Exception $e) {
        registrarLog('Erro ao verificar limite do plano', $e->getMessage());
        return ['excedeu' => false, 'limite' => 0, 'atual' => 0];
    }
}

// Log em arquivo
function registrarLog($acao, $detalhes = '') {
    global $TENANT_ID_ATUAL, $USUARIO_ID_ATUAL;
    
    $arquivoLog = 'logs/cliente_acoes.log';
    $dataHora = date('Y-m-d H:i:s');
    $usuario = $USUARIO_ID_ATUAL ?? 'Sistema';
    $tenant = $TENANT_ID_ATUAL ?? 'N/A';
    $mensagem = "[$dataHora] [Tenant: $tenant] [Usuário: $usuario] [Ação: $acao] $detalhes\n";

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

// FUNÇÃO: Registrar log na tabela cliente_logs
function registrarLogCliente($conn, $clienteId, $acao, $detalhes = '', $funilId = null) {
    global $TENANT_ID_ATUAL, $USUARIO_ID_ATUAL;
    
    try {
        $tenantId = $TENANT_ID_ATUAL;
        $usuarioId = $USUARIO_ID_ATUAL;
        $nomeUsuario = $_SESSION['nome_usuario'] ?? 'Sistema';
        
        $detalhes = converterParaUtf8($detalhes);
        $nomeUsuario = converterParaUtf8($nomeUsuario);
        
        $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;
    }
}

// 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 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;
}

// Função para buscar nome da etapa pelo ID
function buscarNomeEtapa($conn, $etapaId) {
    if (!$etapaId) return 'Não especificada';
    
    $stmt = $conn->prepare("SELECT nome FROM etapas_funis WHERE id = ?");
    $stmt->bind_param("i", $etapaId);
    $stmt->execute();
    $result = $stmt->get_result();
    
    if ($result->num_rows > 0) {
        $etapa = $result->fetch_assoc();
        $stmt->close();
        return $etapa['nome'];
    }
    $stmt->close();
    return 'Etapa desconhecida';
}

// Função para buscar responsável por EMAIL
function buscarResponsavelPorEmail($conn, $emailResponsavel) {
    global $TENANT_ID_ATUAL;
    
    $emailResponsavel = converterParaUtf8($emailResponsavel);
    
    $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, $TENANT_ID_ATUAL);
    $stmt->execute();
    $result = $stmt->get_result();
    
    if ($result->num_rows > 0) {
        $responsavel = $result->fetch_assoc();
        $stmt->close();
        if (!filter_var($responsavel['email'], FILTER_VALIDATE_EMAIL)) return null;
        return $responsavel;
    }
    $stmt->close();
    return null;
}

// FUNÇÃO: Criar log detalhado da importação
function criarLogImportacao($conn, $dadosImportados, $funilId, $etapaId, $funis, $usuarios) {
    $nomeEtapa = buscarNomeEtapa($conn, $etapaId);
    
    $dadosModal = [
        'data_hora' => date('d/m/Y H:i:s'),
        'funil' => $funis[$funilId] ?? 'Desconhecido',
        'etapa' => $nomeEtapa,
        'total_importados' => count($dadosImportados),
        'clientes' => []
    ];
    
    foreach ($dadosImportados as $index => $cliente) {
        $responsavelNome = $usuarios[$cliente['Responsavel']] ?? 'Desconhecido';
        
        $dadosModal['clientes'][] = [
            'numero' => $index + 1,
            'nome' => $cliente['Nome'],
            'email' => $cliente['Email'] ?? 'Não informado',
            'telefone' => $cliente['Telefone'],
            'responsavel' => $responsavelNome,
            'status' => 'Importado com sucesso'
        ];
    }
    
    return $dadosModal;
}

// 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
    ];
}

// ===== BUSCAR DADOS DO BANCO =====

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

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

// Buscar funis cadastrados
$funis = [];
$funis_array = []; // Para usar no select
$stmt_funis = $conn->prepare("SELECT id, nome FROM funis WHERE tenant_id = ? AND ativo = 1 ORDER BY nome");
$stmt_funis->bind_param("i", $TENANT_ID_ATUAL);
$stmt_funis->execute();
$result_funis = $stmt_funis->get_result();
while ($funil = $result_funis->fetch_assoc()) {
    $funis[$funil['id']] = converterParaUtf8($funil['nome']);
    $funis_array[] = $funil;
}
$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", $TENANT_ID_ATUAL);
$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 tiver funil padrão configurado, usar o primeiro funil
if (!$funilPadrao && count($funis_array) > 0) {
    $funilPadrao = $funis_array[0]['id'];
}

// Buscar usuários para o campo responsável
$usuarios = [];
$usuarios_email_map = [];
$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", $TENANT_ID_ATUAL);
$stmt_usuarios->execute();
$result_usuarios = $stmt_usuarios->get_result();
while ($usuario = $result_usuarios->fetch_assoc()) {
    if (filter_var($usuario['email'], FILTER_VALIDATE_EMAIL)) {
        $nome_usuario = converterParaUtf8($usuario['nome']);
        $email_usuario = converterParaUtf8($usuario['email']);
        $usuarios[$usuario['id']] = $nome_usuario . ' (' . $email_usuario . ')';
        $usuarios_email_map[trim(strtolower($email_usuario))] = $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.");
        }

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

        // Detectar automaticamente o delimitador (tab, ponto e vírgula, vírgula)
        $primeiraLinha = fgets($arquivo);
        rewind($arquivo);
        
        $delimitadores = ["\t", ";", ","];
        $delimitador = ","; // padrão
        
        foreach ($delimitadores as $del) {
            if (strpos($primeiraLinha, $del) !== false) {
                $delimitador = $del;
                break;
            }
        }

        $linhasProcessadas = 0;
        $clientesImportados = 0;

        // Verificar se a validação de CPF/CNPJ está ativada
        $validarCpfCnpjImport = isset($_POST['validar_cpf_cnpj_import']) ? true : false;

        $funilId = isset($_POST['funil_id_import']) ? (int)$_POST['funil_id_import'] : 0;
        $etapaId = isset($_POST['etapa_funil_id_import']) ? (int)$_POST['etapa_funil_id_import'] : 0;

        if ($funilId <= 0) {
            throw new Exception("Por favor, selecione um funil para a importação.");
        }
        
        if ($etapaId <= 0) {
            throw new Exception("Por favor, selecione uma etapa do funil para a importação.");
        }

        // Validar se a etapa pertence ao funil
        $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.");
        }

        $limitePlano = verificarLimiteClientes($conn, $TENANT_ID_ATUAL);
        
        $dadosValidos = [];
        $linhasComErro = [];
        $cpfsNoArquivo = []; // Array para rastrear CPFs dentro do próprio arquivo

        // Ignorar cabeçalho
        $cabecalho = fgetcsv($arquivo, 0, $delimitador);
        if (!$cabecalho) {
            throw new Exception("Arquivo CSV vazio ou formato inválido");
        }

        // Número esperado de colunas
        $colunasEsperadas = 18; // Nome, Email, Telefone, Telefone2, Celular, Endereço, Cidade, País, Estado/Província, Bairro, Complemento, CEP, CPF/CNPJ, Origem, Instagram, LinkedIn, Observações, Email Responsável

        // Verificar número de colunas no cabeçalho
        $numColunasCabecalho = count($cabecalho);
        if ($numColunasCabecalho < $colunasEsperadas) {
            throw new Exception("O arquivo CSV não tem o número correto de colunas. Esperado $colunasEsperadas, encontrado $numColunasCabecalho. Verifique o delimitador usado (atualmente usando '$delimitador').");
        }

        while (($linha = fgetcsv($arquivo, 0, $delimitador)) !== false) {
            $linhasProcessadas++;
            $numeroLinha = $linhasProcessadas + 1;
            
            // Garantir que a linha tenha o número correto de colunas
            while (count($linha) < $colunasEsperadas) {
                $linha[] = '';
            }
            
            // Converter cada campo da linha para UTF-8 e trim
            foreach ($linha as $i => $valor) {
                $linha[$i] = converterParaUtf8(trim($valor));
            }
            
            // Verificar limite do plano
            $clientesFuturos = $limitePlano['atual'] + count($dadosValidos) + 1;
            if ($limitePlano['limite'] > 0 && $clientesFuturos > $limitePlano['limite']) {
                $linhasComErro[] = [
                    'linha' => $numeroLinha,
                    'erro' => "Limite do plano excedido. Você possui {$limitePlano['atual']} clientes e o plano permite apenas {$limitePlano['limite']}."
                ];
                continue;
            }
            
            // Validar campos obrigatórios
            if (empty($linha[0])) {
                $linhasComErro[] = ['linha' => $numeroLinha, 'erro' => "Nome do cliente é obrigatório"];
                continue;
            }
            if (empty($linha[2])) {
                $linhasComErro[] = ['linha' => $numeroLinha, 'erro' => "Telefone do cliente é obrigatório"];
                continue;
            }
            if (empty($linha[17])) {
                $linhasComErro[] = ['linha' => $numeroLinha, 'erro' => "E-mail do responsável é obrigatório"];
                continue;
            }

            // Validar responsável
            $responsavelId = null;
            $emailResponsavel = $linha[17];
            
            if (!filter_var($emailResponsavel, FILTER_VALIDATE_EMAIL)) {
                $linhasComErro[] = ['linha' => $numeroLinha, 'erro' => "E-mail do responsável inválido: '$emailResponsavel'"];
                continue;
            }
            
            $emailResponsavelLower = strtolower($emailResponsavel);
            
            if (isset($usuarios_email_map[$emailResponsavelLower])) {
                $responsavelId = $usuarios_email_map[$emailResponsavelLower];
            } else {
                $responsavel = buscarResponsavelPorEmail($conn, $emailResponsavel);
                if ($responsavel) {
                    $responsavelId = $responsavel['id'];
                    $usuarios_email_map[strtolower($responsavel['email'])] = $responsavel['id'];
                } else {
                    $linhasComErro[] = [
                        'linha' => $numeroLinha,
                        'erro' => "Responsável com e-mail '$emailResponsavel' não encontrado no sistema."
                    ];
                    continue;
                }
            }

            // ===== VALIDAÇÃO DA ORIGEM =====
            $origemId = null;
            $origemNome = null;
            
            if (!empty($linha[13])) {
                $origemNomeInput = trim($linha[13]);
                $origemNomeLower = strtolower($origemNomeInput);
                
                if (isset($origens_nome_para_id[$origemNomeLower])) {
                    $origemId = $origens_nome_para_id[$origemNomeLower];
                    $origemNome = $origens_id_para_nome[$origemId];
                } else {
                    $origens_disponiveis = implode(", ", array_values($origens));
                    $linhasComErro[] = [
                        'linha' => $numeroLinha,
                        'erro' => "Origem '$origemNomeInput' não encontrada na tabela de origens. Origens disponíveis: $origens_disponiveis"
                    ];
                    continue;
                }
            }

            // Determinar país e estado/província
            $pais = !empty($linha[7]) ? $linha[7] : 'Brasil';
            $estado = '';
            $provincia = '';
            
            if (strcasecmp($pais, 'Brasil') === 0) {
                $estado = $linha[8] ?? '';
            } else {
                $provincia = $linha[8] ?? '';
            }

            // Validar CPF/CNPJ (AGORA OBRIGATÓRIO)
            $cpf_cnpj = limparCpfCnpj($linha[12] ?? '');
            
            if (empty($cpf_cnpj)) {
                $linhasComErro[] = ['linha' => $numeroLinha, 'erro' => "CPF/CNPJ é obrigatório"];
                continue;
            }
            
            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 DUPLICATAS DENTRO DO PRÓPRIO ARQUIVO =====
            if ($validarCpfCnpjImport) {
                if (isset($cpfsNoArquivo[$cpf_cnpj])) {
                    $linhasComErro[] = [
                        'linha' => $numeroLinha,
                        'erro' => "CPF/CNPJ '" . formatarCpfCnpj($cpf_cnpj) . "' está duplicado no arquivo (também na linha {$cpfsNoArquivo[$cpf_cnpj]})."
                    ];
                    continue;
                }
                
                // Verificar duplicidade no banco
                if (verificarCpfCnpjExistente($conn, $cpf_cnpj, $validarCpfCnpjImport)) {
                    $linhasComErro[] = [
                        'linha' => $numeroLinha,
                        'erro' => "CPF/CNPJ '" . formatarCpfCnpj($cpf_cnpj) . "' já existe."
                    ];
                    continue;
                }
            }

            // Se chegou aqui, todos os dados são válidos
            $dadosValidos[] = [
                'linha' => $numeroLinha,
                'dados' => [
                    'Nome' => $linha[0],
                    'Email' => filter_var($linha[1] ?? '', FILTER_VALIDATE_EMAIL) ?: null,
                    'Telefone' => limparCpfCnpj($linha[2]),
                    'Telefone2' => limparCpfCnpj($linha[3] ?? ''),
                    'Celular' => limparCpfCnpj($linha[4] ?? ''),
                    'Endereco' => $linha[5] ?? '',
                    'Cidade' => $linha[6] ?? '',
                    'Pais' => $pais,
                    'Estado' => $estado,
                    'Provincia' => $provincia,
                    'Bairro' => $linha[9] ?? '',
                    'Complemento' => $linha[10] ?? '',
                    'CEP' => limparCpfCnpj($linha[11] ?? ''),
                    'CPF_CNPJ' => $cpf_cnpj,
                    'OrigemId' => $origemId,
                    'OrigemNome' => $origemNome,
                    'Instagram' => $linha[14] ?? '',
                    'Linkedin' => $linha[15] ?? '',
                    'Observacoes' => $linha[16] ?? '',
                    'Responsavel' => $responsavelId,
                    'status' => 1,
                    'funil' => $funilId,
                    'etapa_funil_id' => $etapaId
                ]
            ];
            
            // Marcar CPF como usado no arquivo
            if ($validarCpfCnpjImport) {
                $cpfsNoArquivo[$cpf_cnpj] = $numeroLinha;
            }
        }

        fclose($arquivo);

        // Se houver erros, mostrar modal de erro
        if (!empty($linhasComErro)) {
            $dadosErroModal = criarDadosErroImportacao($linhasComErro, $linhasProcessadas);
            $_SESSION['erro_importacao'] = $dadosErroModal;
            $_SESSION['importacao_erro'] = true;
            header("Location: cadastrar_cliente.php");
            exit();
        }

        if (empty($dadosValidos)) {
            throw new Exception("Nenhum dado válido para importar.");
        }

        // Processar inserções
        $dadosImportadosComSucesso = [];
        
        foreach ($dadosValidos as $item) {
            $dados = $item['dados'];

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

            $stmt = $conn->prepare($sql);
            
            $dados_sanitizados = [
                sanitizarParaBanco($conn, $dados['Nome']),
                sanitizarParaBanco($conn, $dados['Email']),
                sanitizarParaBanco($conn, $dados['Telefone']),
                sanitizarParaBanco($conn, $dados['Telefone2']),
                sanitizarParaBanco($conn, $dados['Celular']),
                sanitizarParaBanco($conn, $dados['Endereco']),
                sanitizarParaBanco($conn, $dados['Cidade']),
                sanitizarParaBanco($conn, $dados['Pais']),
                sanitizarParaBanco($conn, $dados['Estado']),
                sanitizarParaBanco($conn, $dados['Provincia']),
                sanitizarParaBanco($conn, $dados['Bairro']),
                sanitizarParaBanco($conn, $dados['Complemento']),
                sanitizarParaBanco($conn, $dados['CEP']),
                sanitizarParaBanco($conn, $dados['CPF_CNPJ']),
                $dados['OrigemId'],
                sanitizarParaBanco($conn, $dados['OrigemNome']),
                sanitizarParaBanco($conn, $dados['Instagram']),
                sanitizarParaBanco($conn, $dados['Linkedin']),
                sanitizarParaBanco($conn, $dados['Observacoes']),
                $dados['status'],
                $TENANT_ID_ATUAL,
                $USUARIO_ID_ATUAL,
                $dados['funil'],
                $dados['etapa_funil_id'],
                $dados['Responsavel']
            ];

            $stmt->bind_param("ssssssssssssssisssssiiiii", 
                $dados_sanitizados[0], $dados_sanitizados[1], $dados_sanitizados[2], 
                $dados_sanitizados[3], $dados_sanitizados[4], $dados_sanitizados[5],
                $dados_sanitizados[6], $dados_sanitizados[7], $dados_sanitizados[8],
                $dados_sanitizados[9], $dados_sanitizados[10], $dados_sanitizados[11],
                $dados_sanitizados[12], $dados_sanitizados[13], $dados_sanitizados[14],
                $dados_sanitizados[15], $dados_sanitizados[16], $dados_sanitizados[17],
                $dados_sanitizados[18], $dados_sanitizados[19], $dados_sanitizados[20],
                $dados_sanitizados[21], $dados_sanitizados[22], $dados_sanitizados[23],
                $dados_sanitizados[24]
            );

            $result = $stmt->execute();

            if ($result) {
                $clienteId = $conn->insert_id;
                $clientesImportados++;
                
                require_once 'verificador_fluxos_automatizados.php';
                if (function_exists('executarFluxosClienteCriado')) {
                    executarFluxosClienteCriado($conn, $clienteId, 'cadastro_importacao');
                }

                $dadosImportadosComSucesso[] = $dados;
                
                registrarLogCliente($conn, $clienteId, 'Cadastro Via Importação', 
                    "Cliente cadastrado via importação CSV. Nome: {$dados['Nome']}");
            }
        }

        $dadosLogModal = criarLogImportacao($conn, $dadosImportadosComSucesso, $funilId, $etapaId, $funis, $usuarios);
        
        registrarLog('Importação de clientes via CSV', "Total: $linhasProcessadas, Importados: $clientesImportados");
        
        $_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();
        $_SESSION['tipo_mensagem'] = 'erro';
        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");
        }

        // Verificar se a validação de CPF/CNPJ está ativada
        $validarCpfCnpj = isset($_POST['validar_cpf_cnpj']) ? true : false;

        $limitePlano = verificarLimiteClientes($conn, $TENANT_ID_ATUAL);
        
        if ($limitePlano['excedeu']) {
            throw new Exception("Limite do plano '{$limitePlano['plano_nome']}' atingido.");
        }

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

        if (!$funilId) throw new Exception("Não foi possível determinar o funil.");
        if (!$etapaId) throw new Exception("Não foi possível determinar a etapa.");

        // Validar se a etapa pertence ao funil
        $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.");
        }

        $pais = trim($_POST['pais'] ?? 'Brasil');
        $estado = '';
        $provincia = '';
        
        if (strcasecmp($pais, 'Brasil') === 0) {
            $estado = trim($_POST['estado'] ?? '');
        } else {
            $provincia = trim($_POST['provincia'] ?? '');
        }

        $cpf_cnpj = limparCpfCnpj($_POST['CPF_CNPJ'] ?? '');
        if (empty($cpf_cnpj)) {
            throw new Exception("CPF/CNPJ é obrigatório");
        }
        
        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");
        }
        
        // Verificar duplicidade APENAS no mesmo tenant, respeitando o checkbox
        if (verificarCpfCnpjExistente($conn, $cpf_cnpj, $validarCpfCnpj)) {
            throw new Exception("CPF/CNPJ '" . formatarCpfCnpj($cpf_cnpj) . "' já existe.");
        }

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

        // Buscar nome da origem se o ID foi selecionado
        $origemId = isset($_POST['origem_id']) ? (int)$_POST['origem_id'] : null;
        $origemNome = null;
        if ($origemId && isset($origens_id_para_nome[$origemId])) {
            $origemNome = $origens_id_para_nome[$origemId];
        }

        $dados = [
            'Nome' => trim($_POST['nome'] ?? ''),
            'Email' => filter_var($_POST['email'] ?? '', FILTER_VALIDATE_EMAIL) ?: null,
            'Telefone' => $telefone,
            'Telefone2' => limparCpfCnpj($_POST['telefone2'] ?? ''),
            'Celular' => limparCpfCnpj($_POST['celular'] ?? ''),
            'Endereco' => trim($_POST['endereco'] ?? ''),
            'Cidade' => trim($_POST['cidade'] ?? ''),
            'Pais' => $pais,
            'Estado' => $estado,
            'Provincia' => $provincia,
            'Bairro' => trim($_POST['bairro'] ?? ''),
            'Complemento' => trim($_POST['complemento'] ?? ''),
            'CEP' => limparCpfCnpj($_POST['cep'] ?? ''),
            'CPF_CNPJ' => $cpf_cnpj,
            'OrigemId' => $origemId,
            'OrigemNome' => $origemNome,
            '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");

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

        $stmt = $conn->prepare($sql);
        
        $dados_sanitizados = [
            sanitizarParaBanco($conn, $dados['Nome']),
            sanitizarParaBanco($conn, $dados['Email']),
            sanitizarParaBanco($conn, $dados['Telefone']),
            sanitizarParaBanco($conn, $dados['Telefone2']),
            sanitizarParaBanco($conn, $dados['Celular']),
            sanitizarParaBanco($conn, $dados['Endereco']),
            sanitizarParaBanco($conn, $dados['Cidade']),
            sanitizarParaBanco($conn, $dados['Pais']),
            sanitizarParaBanco($conn, $dados['Estado']),
            sanitizarParaBanco($conn, $dados['Provincia']),
            sanitizarParaBanco($conn, $dados['Bairro']),
            sanitizarParaBanco($conn, $dados['Complemento']),
            sanitizarParaBanco($conn, $dados['CEP']),
            sanitizarParaBanco($conn, $dados['CPF_CNPJ']),
            $dados['OrigemId'],
            sanitizarParaBanco($conn, $dados['OrigemNome']),
            sanitizarParaBanco($conn, $dados['Instagram']),
            sanitizarParaBanco($conn, $dados['Linkedin']),
            sanitizarParaBanco($conn, $dados['Observacoes']),
            $dados['status'],
            $TENANT_ID_ATUAL,
            $USUARIO_ID_ATUAL,
            $dados['funil'],
            $dados['etapa_funil_id'],
            $dados['Responsavel']
        ];

        $stmt->bind_param("ssssssssssssssisssssiiiii", 
            $dados_sanitizados[0], $dados_sanitizados[1], $dados_sanitizados[2], 
            $dados_sanitizados[3], $dados_sanitizados[4], $dados_sanitizados[5],
            $dados_sanitizados[6], $dados_sanitizados[7], $dados_sanitizados[8],
            $dados_sanitizados[9], $dados_sanitizados[10], $dados_sanitizados[11],
            $dados_sanitizados[12], $dados_sanitizados[13], $dados_sanitizados[14],
            $dados_sanitizados[15], $dados_sanitizados[16], $dados_sanitizados[17],
            $dados_sanitizados[18], $dados_sanitizados[19], $dados_sanitizados[20],
            $dados_sanitizados[21], $dados_sanitizados[22], $dados_sanitizados[23],
            $dados_sanitizados[24]
        );

        $result = $stmt->execute();

        if ($result) {
            $clienteId = $conn->insert_id;
            registrarLog('Cadastro de novo cliente', "ID: $clienteId, Nome: {$dados['Nome']}");
            
            registrarLogCliente($conn, $clienteId, 'Cadastro Manual', 
                "Cliente cadastrado manualmente. Nome: {$dados['Nome']}");
            
            require_once 'verificador_fluxos_automatizados.php';
            if (function_exists('executarFluxosClienteCriado')) {
                executarFluxosClienteCriado($conn, $clienteId, 'cadastro_manual');
            }

            $_SESSION['mensagem'] = 'Cliente cadastrado com sucesso!';
            $_SESSION['tipo_mensagem'] = 'sucesso';
            
            header("Location: lista_clientes.php");
            exit();
        } else {
            throw new Exception("Erro ao cadastrar cliente: " . $stmt->error);
        }
    } catch (Exception $e) {
        registrarLog('Erro ao cadastrar cliente', $e->getMessage());
        $_SESSION['mensagem'] = $e->getMessage();
        $_SESSION['tipo_mensagem'] = 'erro';
        header("Location: cadastrar_cliente.php");
        exit();
    }
}

// Gerar template CSV
if (isset($_GET['download_template'])) {
    header('Content-Type: text/csv; charset=utf-8');
    header('Content-Disposition: attachment; filename="template_importacao_clientes.csv"');
    
    $output = fopen('php://output', 'w');
    fprintf($output, chr(0xEF).chr(0xBB).chr(0xBF));
    
    $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, ';');
    
    // Buscar uma origem existente para o exemplo
    $origem_exemplo = !empty($origens) ? reset($origens) : 'Site Institucional';
    
    $exemplo = [
        'João da Silva', 'joao@exemplo.com', '11987654321', '1133334444', '11999998888',
        'Rua Exemplo, 123', 'São Paulo', 'Brasil', 'SP', 'Centro', 'Apto 101', '01001000', '12345678909',
        $origem_exemplo, '@joaosilva', 'linkedin.com/in/joaosilva', 'Cliente preferencial', 'responsavel@empresa.com'
    ];
    
    fputcsv($output, $exemplo, ';');
    
    fclose($output);
    exit();
}

// Exibir mensagem de sucesso se existir
if (isset($_SESSION['mensagem'])) {
    $mensagem = $_SESSION['mensagem'];
    $tipo_mensagem = $_SESSION['tipo_mensagem'] ?? 'sucesso';
    unset($_SESSION['mensagem']);
    unset($_SESSION['tipo_mensagem']);
}

$limitePlano = verificarLimiteClientes($conn, $TENANT_ID_ATUAL);

$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'
];

$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ã', 'Iraque', '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', 
    'Madagascar', '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);
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>SON - Cadastrar Cliente</title>
    <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 name="csrf-token" content="<?= htmlspecialchars($_SESSION['csrf_token']) ?>">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
    <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;
        }
        
        .header-fixed {
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            background-color: #f5f5f5;
            padding: 15px 20px;
            z-index: 1000;
            box-shadow: 0 2px 5px rgba(0,0,0,0.1);
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        
        .header-fixed img {
            height: 50px;
            margin-right: 15px;
        }
        
        .header-fixed h2 {
            margin: 0;
            flex-grow: 1;
            text-align: center;
        }
        
        /* Menu Lateral Recolhível - AGORA NA ESQUERDA */
        .sidebar {
            position: fixed;
            left: 0;
            top: 80px;
            height: calc(100vh - 80px);
            width: 60px;
            background: white;
            box-shadow: 2px 0 5px rgba(0,0,0,0.1);
            z-index: 999;
            transition: width 0.3s ease;
            overflow-x: hidden;
        }
        
        .sidebar-menu {
            list-style: none;
            padding: 0;
            margin: 0;
        }
        
        .sidebar-menu li {
            border-bottom: 1px solid #eee;
        }
        
        .sidebar-menu a {
            display: flex;
            align-items: center;
            padding: 15px 20px;
            text-decoration: none;
            color: #333;
            white-space: nowrap;
            transition: background-color 0.3s;
        }
        
        .sidebar-menu i {
            width: 24px;
            height: 24px;
            margin-right: 15px;
            text-align: center;
            flex-shrink: 0;
        }
        
        .sidebar-menu .menu-text {
            opacity: 0;
            transition: opacity 0.3s ease;
        }
        
        .submenu-sidebar {
            max-height: 0;
            overflow: hidden;
            transition: max-height 0.3s ease;
            background-color: #f9f9f9;
        }
        
        .submenu-sidebar a {
            padding-left: 50px;
            font-size: 0.9em;
        }
        
        .menu-item-sidebar {
            position: relative;
        }
        
        .menu-item-sidebar > a:after {
            content: "▶";
            margin-left: auto;
            font-size: 0.8em;
            transition: transform 0.3s;
        }
        
        .content-wrapper {
            margin-top: 80px;
            padding: 20px;
            margin-left: 60px; /* Espaço para o menu recolhido */
            transition: margin-left 0.3s ease;
        }
        
        .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;
        }
        
        /* Conteúdo Principal */
        .container {
            max-width: 1200px;
            margin: 0 auto;
            background: white;
            padding: 25px;
            border-radius: 8px;
            box-shadow: 0 0 15px rgba(0, 0, 0, 0.05);
        }
        
        .form-container h2 {
            color: #1a2639;
            margin-bottom: 25px;
            font-size: 24px;
            font-weight: 600;
            border-bottom: 2px solid #f0f2f5;
            padding-bottom: 15px;
        }
        
        .form-row {
            display: flex;
            flex-wrap: wrap;
            gap: 20px;
            margin-bottom: 20px;
        }
        
        .form-group {
            flex: 1 1 calc(33.333% - 20px);
            min-width: 250px;
        }
        
        .form-group label {
            display: block;
            margin-bottom: 8px;
            font-weight: 500;
            color: #4a5568;
            font-size: 14px;
        }
        
        .form-group input, 
        .form-group select, 
        .form-group textarea {
            width: 100%;
            padding: 10px 12px;
            border: 1px solid #e2e8f0;
            border-radius: 8px;
            box-sizing: border-box;
            font-size: 14px;
            transition: all 0.3s ease;
            background: #f8fafc;
        }
        
        .form-group input:focus, 
        .form-group select:focus, 
        .form-group textarea:focus {
            outline: none;
            border-color: #4299e1;
            box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.1);
            background: white;
        }
        
        .form-group textarea {
            height: 100px;
            resize: vertical;
        }
        
        .btn {
            padding: 12px 24px;
            border: none;
            border-radius: 8px;
            cursor: pointer;
            font-weight: 600;
            font-size: 14px;
            margin: 0 10px;
            transition: all 0.3s ease;
            text-decoration: none;
            display: inline-block;
        }
        
        .btn-primary {
            background: #4299e1;
            color: white;
        }
        
        .btn-primary:hover:not(:disabled) {
            background: #3182ce;
            transform: translateY(-2px);
            box-shadow: 0 4px 12px rgba(66, 153, 225, 0.3);
        }
        
        .btn-primary:disabled {
            opacity: 0.5;
            cursor: not-allowed;
        }
        
        .btn-secondary {
            background: #718096;
            color: white;
        }
        
        .btn-secondary:hover {
            background: #4a5568;
            transform: translateY(-2px);
        }
        
        .btn-success {
            background: #48bb78;
            color: white;
        }
        
        .btn-success:hover {
            background: #38a169;
            transform: translateY(-2px);
        }
        
        .form-actions {
            margin-top: 30px;
            text-align: center;
            padding-top: 20px;
            border-top: 1px solid #e2e8f0;
        }
        
        .import-section {
            margin-top: 30px;
            padding: 25px;
            background: #f8fafc;
            border-radius: 12px;
            border: 1px solid #e2e8f0;
        }
        
        .import-section h3 {
            color: #1a2639;
            margin-bottom: 15px;
            font-size: 20px;
            font-weight: 600;
        }
        
        .required::after {
            content: " *";
            color: #e53e3e;
            font-weight: bold;
        }
        
        .phone-input-container {
            position: relative;
        }
        
        .flag-container {
            position: absolute;
            left: 12px;
            top: 50%;
            transform: translateY(-50%);
            z-index: 2;
        }
        
        .phone-with-flag {
            padding-left: 45px !important;
        }
        
        .error-message {
            color: #e53e3e;
            font-size: 12px;
            margin-top: 5px;
        }
        
        .validacao-opcao {
            background: #ebf8ff;
            padding: 15px 20px;
            border-radius: 8px;
            margin-bottom: 25px;
            border-left: 4px solid #4299e1;
            display: flex;
            align-items: center;
            gap: 15px;
            flex-wrap: wrap;
        }
        
        .validacao-opcao input[type="checkbox"] {
            width: 18px;
            height: 18px;
            cursor: pointer;
            accent-color: #4299e1;
        }
        
        .validacao-opcao label {
            font-weight: 500;
            color: #2c5282;
            cursor: pointer;
            font-size: 14px;
        }
        
        .validacao-opcao small {
            color: #718096;
            font-size: 13px;
            background: white;
            padding: 4px 10px;
            border-radius: 20px;
        }
        
        .plano-info {
            background: linear-gradient(135deg, #4299e1 0%, #667eea 100%);
            color: white;
            padding: 20px 25px;
            border-radius: 12px;
            margin-bottom: 25px;
            display: flex;
            justify-content: space-between;
            align-items: center;
            flex-wrap: wrap;
            gap: 15px;
        }
        
        .plano-info h4 {
            margin: 0;
            font-size: 18px;
            font-weight: 600;
        }
        
        .plano-info p {
            margin: 5px 0 0 0;
            opacity: 0.95;
            font-size: 14px;
        }
        
        .plano-info .stats {
            background: rgba(255,255,255,0.2);
            padding: 10px 20px;
            border-radius: 30px;
            font-size: 16px;
            font-weight: 600;
        }
        
        .plano-limite-alerta {
            background: #fff5f5;
            color: #c53030;
            padding: 15px 20px;
            border-radius: 8px;
            margin-bottom: 25px;
            border-left: 4px solid #c53030;
            display: flex;
            align-items: center;
            gap: 15px;
        }
        
        .modal-overlay {
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            background: rgba(0, 0, 0, 0.5);
            display: flex;
            justify-content: center;
            align-items: center;
            z-index: 9999;
            backdrop-filter: blur(5px);
        }
        
        .modal-content {
            background: white;
            border-radius: 12px;
            width: 90%;
            max-width: 600px;
            max-height: 80vh;
            overflow: hidden;
            display: flex;
            flex-direction: column;
            box-shadow: 0 20px 40px rgba(0,0,0,0.2);
        }
        
        .modal-header {
            background: #4299e1;
            color: white;
            padding: 20px 25px;
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        
        .modal-header h3 {
            margin: 0;
            font-size: 20px;
            font-weight: 600;
        }
        
        .modal-close {
            background: none;
            border: none;
            color: white;
            font-size: 28px;
            cursor: pointer;
            opacity: 0.8;
            transition: opacity 0.3s ease;
        }
        
        .modal-close:hover {
            opacity: 1;
        }
        
        .modal-body {
            padding: 25px;
            overflow-y: auto;
        }
        
        .log-summary {
            background: #f0fff4;
            border-radius: 8px;
            padding: 20px;
            margin-bottom: 20px;
            border-left: 4px solid #48bb78;
        }
        
        .log-summary-error {
            background: #fff5f5;
            border-radius: 8px;
            padding: 20px;
            margin-bottom: 20px;
            border-left: 4px solid #f56565;
        }
        
        .summary-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
            gap: 15px;
            margin-top: 10px;
        }
        
        .erro-item {
            background: #fff5f5;
            border: 1px solid #fed7d7;
            border-radius: 8px;
            padding: 12px 15px;
            margin-bottom: 10px;
        }
        
        .modal-footer {
            padding: 20px 25px;
            background: #f7fafc;
            border-top: 1px solid #e2e8f0;
            display: flex;
            justify-content: flex-end;
            gap: 10px;
        }
        
        .btn-modal {
            padding: 10px 20px;
            border: none;
            border-radius: 6px;
            cursor: pointer;
            font-weight: 500;
            font-size: 14px;
            transition: all 0.3s ease;
        }
        
        .btn-modal-primary {
            background: #4299e1;
            color: white;
        }
        
        .btn-modal-primary:hover {
            background: #3182ce;
        }
        
        .btn-modal-secondary {
            background: #718096;
            color: white;
        }
        
        .btn-modal-secondary:hover {
            background: #4a5568;
        }
        
        .btn-modal-danger {
            background: #f56565;
            color: white;
        }
        
        .btn-modal-danger:hover {
            background: #e53e3e;
        }
        
        .hidden {
            display: none !important;
        }
        
        /* Mensagem flutuante */
        .mensagem-flutuante {
            position: fixed;
            top: 90px;
            right: 25px;
            padding: 14px 24px;
            background: #2ecc71;
            color: white;
            border-radius: 4px;
            z-index: 2000;
            box-shadow: 0 3px 10px rgba(0, 0, 0, 0.15);
            font-weight: 500;
            animation: slideIn 0.3s ease-out;
        }
        
        .mensagem-flutuante.erro {
            background: #f56565;
        }
        
        @keyframes slideIn {
            from {
                transform: translateY(-20px);
                opacity: 0;
            }
            to {
                transform: translateY(0);
                opacity: 1;
            }
        }
        
        @media (max-width: 768px) {
            .content-wrapper {
                margin-left: 0;
                padding: 15px;
            }
            
            .form-group {
                flex: 1 1 100%;
            }
            
            .container {
                padding: 18px;
            }
            
            .form-actions {
                display: flex;
                flex-direction: column;
                gap: 10px;
            }
            
            .btn {
                margin: 5px 0;
            }
        }
    </style>
</head>
<body>
    <?php include 'menu_lateral.php'; ?>
    
    <!-- Conteúdo Principal -->
    <div class="content-wrapper">
        <div class="container">
            <!-- Mensagem flutuante -->
            <?php if (isset($mensagem)): ?>
            <div class="mensagem-flutuante <?php echo $tipo_mensagem === 'erro' ? 'erro' : ''; ?>" id="mensagem-flutuante">
                <i class="fas <?php echo $tipo_mensagem === 'erro' ? 'fa-exclamation-circle' : 'fa-check-circle'; ?>"></i>
                <?php echo htmlspecialchars($mensagem); ?>
            </div>
            <script>
                setTimeout(function() {
                    var msg = document.getElementById('mensagem-flutuante');
                    if (msg) {
                        msg.style.opacity = '0';
                        setTimeout(function() {
                            msg.style.display = 'none';
                        }, 300);
                    }
                }, 5000);
            </script>
            <?php endif; ?>
            
            <div class="form-container">
                <h2><i class="fas fa-user-plus" style="margin-right: 10px;"></i> Cadastrar Novo Cliente</h2>
                
                <div class="plano-info">
                    <div>
                        <h4><i class="fas fa-crown" style="margin-right: 8px;"></i> Tenant ID: <?php echo $TENANT_ID_ATUAL; ?></h4>
                        <p>Plano: <?php echo htmlspecialchars($limitePlano['plano_nome']); ?></p>
                    </div>
                    <div class="stats">
                        <i class="fas fa-users"></i> 
                        <?php echo number_format($limitePlano['atual'], 0, ',', '.'); ?> / <?php echo number_format($limitePlano['limite'], 0, ',', '.'); ?>
                    </div>
                </div>
                
                <?php if ($limitePlano['excedeu']): ?>
                    <div class="plano-limite-alerta">
                        <i class="fas fa-exclamation-triangle" style="font-size: 24px;"></i>
                        <div>
                            <strong>Limite do Plano Atingido!</strong><br>
                            Você atingiu o limite máximo de <?php echo number_format($limitePlano['limite'], 0, ',', '.'); ?> clientes.
                        </div>
                    </div>
                <?php endif; ?>
                
                <form method="POST" action="" id="formCliente">
                    <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
                    
                    <div class="validacao-opcao">
                        <input type="checkbox" id="validar_cpf_cnpj" name="validar_cpf_cnpj" checked>
                        <label for="validar_cpf_cnpj">
                            <i class="fas fa-shield-alt" style="margin-right: 5px;"></i> Validar CPF/CNPJ (impedir duplicatas neste tenant)
                        </label>
                        <small><i class="fas fa-info-circle"></i> Desmarque para permitir duplicatas</small>
                    </div>
                    
                    <div class="form-row">
                        <div class="form-group">
                            <label for="nome" class="required">Nome do Cliente</label>
                            <input type="text" id="nome" name="nome" placeholder="Digite o nome completo" required>
                        </div>
                        <div class="form-group">
                            <label for="email">E-mail</label>
                            <input type="email" id="email" name="email" placeholder="cliente@exemplo.com">
                        </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" placeholder="(11) 1234-5678" required>
                            </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" placeholder="(11) 1234-5678">
                            </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" placeholder="(11) 91234-5678">
                            </div>
                        </div>
                    </div>
                    
                    <div class="form-row">
                        <div class="form-group">
                            <label for="endereco">Endereço</label>
                            <input type="text" id="endereco" name="endereco" placeholder="Rua, número">
                        </div>
                        <div class="form-group">
                            <label for="cidade">Cidade</label>
                            <input type="text" id="cidade" name="cidade" placeholder="São Paulo">
                        </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</option>
                                <?php foreach ($estados_brasil as $sigla => $nome): ?>
                                    <option value="<?php echo $sigla; ?>"><?php echo $sigla; ?> - <?php echo $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="Província">
                        </div>
                    </div>
                    
                    <div class="form-row">
                        <div class="form-group">
                            <label for="bairro">Bairro</label>
                            <input type="text" id="bairro" name="bairro" placeholder="Centro">
                        </div>
                        <div class="form-group">
                            <label for="complemento">Complemento</label>
                            <input type="text" id="complemento" name="complemento" placeholder="Apto 101">
                        </div>
                        <div class="form-group">
                            <label for="cep">CEP</label>
                            <input type="text" id="cep" name="cep" placeholder="01001-000">
                        </div>
                    </div>
                    
                    <div class="form-row">
                        <div class="form-group">
                            <label for="CPF_CNPJ" class="required">CPF/CNPJ</label>
                            <input type="text" id="CPF_CNPJ" name="CPF_CNPJ" placeholder="000.000.000-00" required>
                        </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" placeholder="@usuario">
                        </div>
                        <div class="form-group">
                            <label for="linkedin">LinkedIn</label>
                            <input type="text" id="linkedin" name="linkedin" placeholder="linkedin.com/in/usuario">
                        </div>
                    </div>
                    
                    <div class="form-row">
                        <div class="form-group">
                            <label for="observacoes">Observações</label>
                            <textarea id="observacoes" name="observacoes" placeholder="Informações adicionais..."></textarea>
                        </div>
                    </div>
                    
                    <div class="form-row">
                        <div class="form-group">
                            <label for="funil_id">Funil</label>
                            <select id="funil_id" name="funil_id" onchange="carregarEtapas(this.value, 'etapa_funil_id')" required>
                                <option value="">Selecione um funil</option>
                                <?php foreach ($funis_array as $funil): ?>
                                    <option value="<?php echo $funil['id']; ?>" <?php echo ($funil['id'] == $funilPadrao) ? 'selected' : ''; ?>>
                                        <?php echo htmlspecialchars($funil['nome']); ?>
                                    </option>
                                <?php endforeach; ?>
                            </select>
                        </div>
                        <div class="form-group">
                            <label for="etapa_funil_id">Etapa</label>
                            <select id="etapa_funil_id" name="etapa_funil_id" required>
                                <option value="">Selecione uma etapa</option>
                            </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" <?php echo ($limitePlano['excedeu']) ? 'disabled' : ''; ?>>
                            <?php if ($limitePlano['excedeu']): ?>
                                <i class="fas fa-lock"></i> Limite Atingido
                            <?php else: ?>
                                <i class="fas fa-save"></i> Cadastrar Cliente
                            <?php endif; ?>
                        </button>
                        <a href="lista_clientes.php" class="btn btn-secondary">
                            <i class="fas fa-arrow-left"></i> Voltar
                        </a>
                    </div>
                </form>
                
                <div class="import-section">
                    <h3><i class="fas fa-file-import"></i> Importar Clientes via CSV</h3>
                    <p style="color: #718096; margin-bottom: 20px;">Faça o upload de um arquivo CSV para importar múltiplos clientes de uma vez.</p>
                    
                    <form method="POST" action="" enctype="multipart/form-data" id="formImportacao">
                        <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
                        
                        <div class="validacao-opcao" style="margin-bottom: 20px;">
                            <input type="checkbox" id="validar_cpf_cnpj_import" name="validar_cpf_cnpj_import" checked>
                            <label for="validar_cpf_cnpj_import">
                                <i class="fas fa-shield-alt"></i> Validar CPF/CNPJ (impedir duplicatas neste tenant)
                            </label>
                            <small><i class="fas fa-info-circle"></i> Desmarque para permitir duplicatas</small>
                        </div>
                        
                        <div class="form-row">
                            <div class="form-group">
                                <label for="funil_id_import" class="required">Funil</label>
                                <select id="funil_id_import" name="funil_id_import" required onchange="carregarEtapas(this.value, 'etapa_funil_id_import')">
                                    <option value="">Selecione um funil</option>
                                    <?php foreach ($funis_array as $funil): ?>
                                        <option value="<?php echo $funil['id']; ?>" <?php echo ($funil['id'] == $funilPadrao) ? 'selected' : ''; ?>>
                                            <?php echo htmlspecialchars($funil['nome']); ?>
                                        </option>
                                    <?php endforeach; ?>
                                </select>
                            </div>
                            <div class="form-group">
                                <label for="etapa_funil_id_import" class="required">Etapa</label>
                                <select id="etapa_funil_id_import" name="etapa_funil_id_import" required>
                                    <option value="">Selecione uma etapa</option>
                                </select>
                            </div>
                        </div>
                        
                        <div style="display: flex; gap: 15px; align-items: center; margin-top: 20px;">
                            <a href="?download_template=1" class="btn btn-success" style="flex: 1; text-align: center;">
                                <i class="fas fa-download"></i> Baixar Template
                            </a>
                            
                            <div style="flex: 2; display: flex; gap: 10px;">
                                <input type="file" name="arquivo_csv" accept=".csv" required style="flex: 1; padding: 10px; border: 1px solid #e2e8f0; border-radius: 8px; background: white;">
                                <button type="submit" class="btn btn-primary">
                                    <i class="fas fa-upload"></i> Importar
                                </button>
                            </div>
                        </div>
                    </form>
                    
                    <div style="margin-top: 25px; padding: 15px; background: #ebf8ff; border-radius: 8px;">
                        <strong style="color: #2c5282;"><i class="fas fa-info-circle"></i> Importante:</strong>
                        <ul style="margin: 10px 0 0 20px; color: #2c5282;">
                            <li>O nome da origem deve existir na tabela de origens</li>
                            <li>E-mail do responsável deve ser de um usuário ativo</li>
                            <li>Telefone deve ter entre 10 e 15 dígitos</li>
                            <li>CPF/CNPJ é obrigatório e será validado se o checkbox estiver marcado</li>
                            <li>Não é permitido CPF/CNPJ duplicado no mesmo arquivo</li>
                            <li>Campos marcados com * são obrigatórios</li>
                            
                        </ul>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <!-- MODAL DE SUCESSO DA IMPORTAÇÃO -->
    <?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-check-circle"></i> Importação Concluída!</h3>
                <button type="button" class="modal-close" onclick="fecharModal()">&times;</button>
            </div>
            <div class="modal-body">
                <div class="log-summary">
                    <h4 style="margin-bottom: 15px;">Resumo:</h4>
                    <div class="summary-grid">
                        <div><strong>Importados:</strong> <?php echo $_SESSION['total_importados']; ?></div>
                        <div><strong>Processados:</strong> <?php echo $_SESSION['total_processados']; ?></div>
                        <div><strong>Funil:</strong> <?php echo htmlspecialchars($_SESSION['log_importacao']['funil']); ?></div>
                        <div><strong>Etapa:</strong> <?php echo htmlspecialchars($_SESSION['log_importacao']['etapa']); ?></div>
                    </div>
                </div>
            </div>
            <div class="modal-footer">
                <button class="btn-modal btn-modal-secondary" onclick="fecharModal()">Fechar</button>
                <button class="btn-modal btn-modal-primary" onclick="irParaLista()">Ver Lista</button>
            </div>
        </div>
    </div>
    <?php 
        unset($_SESSION['importacao_sucesso']);
        unset($_SESSION['log_importacao']);
        unset($_SESSION['total_importados']);
        unset($_SESSION['total_processados']);
    ?>
    <?php endif; ?>

    <!-- MODAL DE ERRO DA 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: #f56565;">
                <h3><i class="fas fa-exclamation-triangle"></i> Erros na Importação</h3>
                <button type="button" class="modal-close" onclick="fecharModalErro()">&times;</button>
            </div>
            <div class="modal-body">
                <div class="log-summary-error">
                    <h4 style="margin-bottom: 15px;">Resumo:</h4>
                    <div class="summary-grid">
                        <div><strong>Total de linhas:</strong> <?php echo $_SESSION['erro_importacao']['total_linhas']; ?></div>
                        <div><strong>Erros:</strong> <?php echo $_SESSION['erro_importacao']['total_erros']; ?></div>
                    </div>
                </div>
                
                <h4 style="margin: 20px 0 10px;">Detalhes:</h4>
                <div style="max-height: 200px; overflow-y: auto;">
                    <?php foreach ($_SESSION['erro_importacao']['erros'] as $erro): ?>
                        <div class="erro-item">
                            <strong>Linha <?php echo $erro['linha']; ?>:</strong> <?php echo htmlspecialchars($erro['erro']); ?>
                        </div>
                    <?php endforeach; ?>
                </div>
            </div>
            <div class="modal-footer">
                <button class="btn-modal btn-modal-secondary" onclick="fecharModalErro()">Fechar</button>
                <button class="btn-modal btn-modal-danger" onclick="baixarTemplate()">Baixar Template</button>
            </div>
        </div>
    </div>
    <?php 
        unset($_SESSION['importacao_erro']);
        unset($_SESSION['erro_importacao']);
    ?>
    <?php endif; ?>

<script>
// Função simplificada para carregar etapas
function carregarEtapas(funilId, elementoId) {
    console.log('Carregando etapas para funil:', funilId, 'elemento:', elementoId);
    
    var etapaSelect = document.getElementById(elementoId);
    
    if (!etapaSelect) {
        console.error('Elemento não encontrado');
        return;
    }
    
    if (!funilId || funilId === '') {
        etapaSelect.innerHTML = '<option value="">Selecione um funil primeiro</option>';
        return;
    }
    
    etapaSelect.innerHTML = '<option value="">Carregando...</option>';
    etapaSelect.disabled = true;
    
    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'carregar_etapas.php?funil_id=' + funilId, true);
    xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    
    xhr.onload = function() {
        etapaSelect.disabled = false;
        
        if (xhr.status === 200) {
            try {
                var data = JSON.parse(xhr.responseText);
                console.log('Dados recebidos:', data);
                
                if (Array.isArray(data) && data.length > 0) {
                    var options = '<option value="">Selecione uma etapa</option>';
                    for (var i = 0; i < data.length; i++) {
                        options += '<option value="' + data[i].id + '">' + data[i].nome + '</option>';
                    }
                    etapaSelect.innerHTML = options;
                } else {
                    etapaSelect.innerHTML = '<option value="">Nenhuma etapa encontrada</option>';
                }
            } catch (e) {
                console.error('Erro ao processar resposta:', e);
                etapaSelect.innerHTML = '<option value="">Erro ao processar dados</option>';
            }
        } else {
            console.error('Erro na requisição:', xhr.status);
            etapaSelect.innerHTML = '<option value="">Erro ao carregar</option>';
        }
    };
    
    xhr.onerror = function() {
        console.error('Erro de rede');
        etapaSelect.disabled = false;
        etapaSelect.innerHTML = '<option value="">Erro de conexão</option>';
    };
    
    xhr.send();
}

// Função para carregar etapas iniciais
function carregarEtapasIniciais() {
    var funilPadrao = <?php echo $funilPadrao ?: 0; ?>;
    console.log('Funil padrão:', funilPadrao);
    
    if (funilPadrao > 0) {
        var funilSelect = document.getElementById('funil_id');
        if (funilSelect) {
            funilSelect.value = funilPadrao;
            setTimeout(function() {
                carregarEtapas(funilPadrao, 'etapa_funil_id');
            }, 100);
        }
        
        var funilImportSelect = document.getElementById('funil_id_import');
        if (funilImportSelect) {
            funilImportSelect.value = funilPadrao;
            setTimeout(function() {
                carregarEtapas(funilPadrao, 'etapa_funil_id_import');
            }, 200);
        }
    }
}

// Funções de máscara
function aplicarMascaraTelefone(input) {
    if (!input) return;
    input.addEventListener('input', function(e) {
        var 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;
    });
}

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

function aplicarMascaraCPF_CNPJ(input) {
    if (!input) return;
    input.addEventListener('input', function(e) {
        var 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;
    });
}

// Funções para modais
function fecharModal() {
    var modal = document.getElementById('modalLogImportacao');
    if (modal) modal.style.display = 'none';
}

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

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

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

// Inicialização
document.addEventListener('DOMContentLoaded', function() {
    console.log('DOM carregado');
    
    // Aplicar máscaras
    aplicarMascaraTelefone(document.getElementById('telefone'));
    aplicarMascaraTelefone(document.getElementById('telefone2'));
    aplicarMascaraTelefone(document.getElementById('celular'));
    aplicarMascaraCEP(document.getElementById('cep'));
    aplicarMascaraCPF_CNPJ(document.getElementById('CPF_CNPJ'));

    // Lógica para país/estado
    var paisSelect = document.getElementById('pais');
    if (paisSelect) {
        paisSelect.addEventListener('change', function() {
            var isBrasil = this.value === 'Brasil';
            var estadoGroup = document.getElementById('estado-group');
            var provinciaGroup = document.getElementById('provincia-group');
            
            if (estadoGroup) {
                if (isBrasil) {
                    estadoGroup.classList.remove('hidden');
                } else {
                    estadoGroup.classList.add('hidden');
                }
            }
            
            if (provinciaGroup) {
                if (isBrasil) {
                    provinciaGroup.classList.add('hidden');
                } else {
                    provinciaGroup.classList.remove('hidden');
                }
            }
        });
    }

    // Carregar etapas iniciais
    carregarEtapasIniciais();
});
</script>
    
    <?php include 'sino_notificacoes.php'; ?>
</body>
</html>
<?php
$conn->close();
?>