<?php
session_start();

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

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

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

require_once 'conexao.php';

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

// ========== FUNÇÕES ========== //

/**
 * Função para enviar email usando PHPMailer + SMTP
 */
function enviarEmailPHPMailer($destinatario, $assunto, $mensagem, $nomeRemetente, $emailRemetenteReplyTo = null) {
    try {
        // Incluir arquivo de configurações SMTP externo
        require_once 'config_smtp.php';
        
        // Verificar se o PHPMailer está disponível
        $phpmailer_paths = [
            'PHPMailer/PHPMailer.php',
            'PHPMailer/src/PHPMailer.php',
            '../PHPMailer/PHPMailer.php',
            'vendor/phpmailer/phpmailer/src/PHPMailer.php'
        ];
        
        $phpmailer_file = null;
        foreach ($phpmailer_paths as $path) {
            if (file_exists($path)) {
                $phpmailer_file = $path;
                break;
            }
        }
        
        if (!$phpmailer_file) {
            return ['success' => false, 'message' => 'PHPMailer não encontrado.'];
        }
        
        require_once $phpmailer_file;
        
        // Incluir SMTP e Exception
        $smtp_file = str_replace('PHPMailer.php', 'SMTP.php', $phpmailer_file);
        $exception_file = str_replace('PHPMailer.php', 'Exception.php', $phpmailer_file);
        
        if (file_exists($smtp_file)) require_once $smtp_file;
        if (file_exists($exception_file)) require_once $exception_file;
        
        // Usar namespaces se disponível
        if (class_exists('PHPMailer\PHPMailer\PHPMailer')) {
            $mail = new PHPMailer\PHPMailer\PHPMailer(true);
        } else {
            $mail = new PHPMailer(true);
        }
        
        // Configurações SMTP
        $mail->isSMTP();
        $mail->Host       = SMTP_HOST;
        $mail->SMTPAuth   = true;
        $mail->Username   = SMTP_USER;
        $mail->Password   = SMTP_PASS;
        $mail->SMTPSecure = defined('SMTP_SECURE') ? SMTP_SECURE : 'tls';
        $mail->Port       = SMTP_PORT;
        $mail->CharSet    = 'UTF-8';
        $mail->SMTPDebug  = 0;
        
        // Opções SSL
        $mail->SMTPOptions = [
            'ssl' => [
                'verify_peer' => false,
                'verify_peer_name' => false,
                'allow_self_signed' => true
            ]
        ];
        
        // Configurar remetente
        $fromNome = $nomeRemetente;
        $fromEmail = SMTP_USER;
        
        $mail->setFrom($fromEmail, $fromNome);
        
        // Reply-To é o email real do usuário
        if (!empty($emailRemetenteReplyTo) && filter_var($emailRemetenteReplyTo, FILTER_VALIDATE_EMAIL)) {
            $mail->addReplyTo($emailRemetenteReplyTo, $nomeRemetente);
        } else {
            $mail->addReplyTo(SMTP_USER, 'Sistema SON');
        }
        
        // Destinatário
        $mail->addAddress($destinatario);
        
        // Conteúdo - IMPORTANTE: isHTML(true) para enviar HTML
        $mail->isHTML(true);
        $mail->Subject = $assunto;
        $mail->Body    = $mensagem; // HTML completo
        $mail->AltBody = strip_tags($mensagem); // Versão texto puro
        
        $mail->send();
        return ['success' => true, 'message' => 'E-mail enviado com sucesso'];
        
    } catch (Exception $e) {
        error_log("Erro PHPMailer: " . $e->getMessage());
        return ['success' => false, 'message' => 'Erro: ' . $e->getMessage()];
    }
}

/**
 * Função para enviar email usando mail() nativo (fallback)
 */
function enviarEmailNativo($destinatario, $assunto, $mensagem, $nomeRemetente, $emailRemetenteReplyTo = null) {
    $remetenteNome = $nomeRemetente;
    $remetenteEmail = SMTP_USER;
    
    $headers = "From: $remetenteNome <$remetenteEmail>\r\n";
    
    if (!empty($emailRemetenteReplyTo) && filter_var($emailRemetenteReplyTo, FILTER_VALIDATE_EMAIL)) {
        $headers .= "Reply-To: $emailRemetenteReplyTo\r\n";
    }
    
    // IMPORTANTE: Content-Type text/html
    $headers .= "Content-Type: text/html; charset=UTF-8\r\n";
    $headers .= "X-Mailer: PHP/" . phpversion();
    
    if (mail($destinatario, $assunto, $mensagem, $headers)) {
        return ['success' => true, 'message' => 'E-mail enviado com sucesso (mail())'];
    }
    
    return ['success' => false, 'message' => 'Falha no envio via mail()'];
}

/**
 * Função principal para enviar email
 */
function enviarEmail($destinatario, $assunto, $mensagem, $nomeRemetente, $emailRemetenteReplyTo = null) {
    // Primeiro tenta com PHPMailer
    $resultado = enviarEmailPHPMailer($destinatario, $assunto, $mensagem, $nomeRemetente, $emailRemetenteReplyTo);
    
    // Se PHPMailer falhar, tenta com mail() nativo
    if (!$resultado['success']) {
        error_log("PHPMailer falhou, tentando mail() nativo: " . $resultado['message']);
        $resultado = enviarEmailNativo($destinatario, $assunto, $mensagem, $nomeRemetente, $emailRemetenteReplyTo);
    }
    
    return $resultado;
}

/**
 * Converter caminho relativo para URL absoluta
 */
function converterParaUrlAbsoluta($caminhoRelativo) {
    if (filter_var($caminhoRelativo, FILTER_VALIDATE_URL)) {
        return $caminhoRelativo;
    }
    
    $protocolo = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http";
    $host = $_SERVER['HTTP_HOST'];
    
    if (strpos($caminhoRelativo, '/') === 0) {
        return $protocolo . "://" . $host . $caminhoRelativo;
    }
    
    $diretorioBase = dirname($_SERVER['PHP_SELF']);
    return $protocolo . "://" . $host . $diretorioBase . '/' . ltrim($caminhoRelativo, '/');
}

/**
 * Carregar dados da assinatura
 */
function carregarDadosAssinatura($conn, $tenantId, $usuarioId) {
    try {
        // Carregar logo do tenant
        $stmt = $conn->prepare("SELECT logo_path, nome as nome_tenant FROM tenants WHERE id = ?");
        $stmt->bind_param("i", $tenantId);
        $stmt->execute();
        $result = $stmt->get_result();
        $tenant = $result->fetch_assoc();
        $stmt->close();
        
        // Carregar dados do usuário
        $stmt = $conn->prepare("SELECT nome, email, assinatura_email, telefone, cargo FROM usuarios WHERE id = ?");
        $stmt->bind_param("i", $usuarioId);
        $stmt->execute();
        $result = $stmt->get_result();
        $usuario = $result->fetch_assoc();
        $stmt->close();
        
        return [
            'tenant' => $tenant,
            'usuario' => $usuario
        ];
        
    } catch (Exception $e) {
        error_log("Erro ao carregar dados da assinatura: " . $e->getMessage());
        return null;
    }
}

/**
 * Gerar assinatura HTML
 */
function gerarAssinatura($dadosAssinatura) {
    if (!$dadosAssinatura) return '';
    
    $logo = $dadosAssinatura['tenant']['logo_path'] ?? '';
    $nomeUsuario = $dadosAssinatura['usuario']['nome'] ?? '';
    $emailUsuario = $dadosAssinatura['usuario']['email'] ?? '';
    $telefoneUsuario = $dadosAssinatura['usuario']['telefone'] ?? '';
    $cargoUsuario = $dadosAssinatura['usuario']['cargo'] ?? '';
    $nomeTenant = $dadosAssinatura['tenant']['nome_tenant'] ?? '';
    
    // Se o usuário tem uma assinatura personalizada, usar ela
    if (!empty($dadosAssinatura['usuario']['assinatura_email'])) {
        return $dadosAssinatura['usuario']['assinatura_email'];
    }
    
    // Gerar assinatura padrão
    $assinatura = "\n\n<div style='margin-top: 30px; padding-top: 20px; border-top: 2px solid #007bff; font-family: Arial, sans-serif; color: #333;'>\n";
    
    // Logo do tenant
    if (!empty($logo)) {
        $logoUrl = converterParaUrlAbsoluta($logo);
        $assinatura .= "    <div style='margin-bottom: 15px;'>\n";
        $assinatura .= "        <img src='{$logoUrl}' alt='{$nomeTenant}' style='max-height: 50px; max-width: 200px;' />\n";
        $assinatura .= "    </div>\n";
    }
    
    // Dados do usuário
    $assinatura .= "    <div style='line-height: 1.6;'>\n";
    $assinatura .= "        <strong>{$nomeUsuario}</strong>\n";
    
    if (!empty($cargoUsuario)) {
        $assinatura .= "        <br>{$cargoUsuario}\n";
    }
    
    if (!empty($nomeTenant)) {
        $assinatura .= "        <br>{$nomeTenant}\n";
    }
    
    if (!empty($emailUsuario)) {
        $assinatura .= "        <br>E-mail: <a href='mailto:{$emailUsuario}' style='color: #007bff; text-decoration: none;'>{$emailUsuario}</a>\n";
    }
    
    if (!empty($telefoneUsuario)) {
        $assinatura .= "        <br>Telefone: {$telefoneUsuario}\n";
    }
    
    $assinatura .= "    </div>\n";
    $assinatura .= "</div>";
    
    return $assinatura;
}

/**
 * Substituir variáveis no conteúdo do e-mail
 */
function substituirVariaveisEmail($conteudo, $clienteId, $conn, $tenantId) {
    try {
        // Carregar dados completos do cliente
        $stmt = $conn->prepare("
            SELECT 
                c.*,
                f.nome as nome_funil,
                ef.nome as nome_etapa,
                u_resp.nome as nome_responsavel,
                u_resp.email as email_responsavel,
                u_cad.nome as nome_usuario_cadastro,
                t.nome as nome_tenant
            FROM clientes c
            LEFT JOIN funis f ON c.funil_id = f.id AND f.tenant_id = ?
            LEFT JOIN etapas_funis ef ON c.etapa_funil_id = ef.id
            LEFT JOIN usuarios u_resp ON c.responsavel = u_resp.id
            LEFT JOIN usuarios u_cad ON c.usuario_cadastro = u_cad.id
            LEFT JOIN tenants t ON c.tenant_id = t.id
            WHERE c.id = ? AND c.tenant_id = ?
        ");
        $stmt->bind_param("iii", $tenantId, $clienteId, $tenantId);
        $stmt->execute();
        $result = $stmt->get_result();
        
        if ($result->num_rows === 0) {
            return $conteudo;
        }
        
        $cliente = $result->fetch_assoc();
        $stmt->close();
        
        // Array de substituições
        $substituicoes = [
            '{cliente_id}' => $cliente['id'],
            '{cliente_nome}' => $cliente['Nome_Cliente'] ?? '',
            '{nome_cliente}' => $cliente['Nome_Cliente'] ?? '',
            '{cliente_email}' => $cliente['Email'] ?? '',
            '{email_cliente}' => $cliente['Email'] ?? '',
            '{cliente_telefone}' => $cliente['Telefone'] ?? '',
            '{telefone_cliente}' => $cliente['Telefone'] ?? '',
            '{cliente_telefone2}' => $cliente['Telefone2'] ?? '',
            '{telefone2_cliente}' => $cliente['Telefone2'] ?? '',
            '{cliente_celular}' => $cliente['Celular'] ?? '',
            '{celular_cliente}' => $cliente['Celular'] ?? '',
            '{cliente_endereco}' => $cliente['Endereco'] ?? '',
            '{endereco_cliente}' => $cliente['Endereco'] ?? '',
            '{cliente_cidade}' => $cliente['Cidade'] ?? '',
            '{cidade_cliente}' => $cliente['Cidade'] ?? '',
            '{cliente_bairro}' => $cliente['Bairro'] ?? '',
            '{bairro_cliente}' => $cliente['Bairro'] ?? '',
            '{cliente_complemento}' => $cliente['Complemento'] ?? '',
            '{complemento_cliente}' => $cliente['Complemento'] ?? '',
            '{cliente_cep}' => $cliente['CEP'] ?? '',
            '{cep_cliente}' => $cliente['CEP'] ?? '',
            '{cliente_estado}' => $cliente['Estado'] ?? '',
            '{estado_cliente}' => $cliente['Estado'] ?? '',
            '{cliente_provincia}' => $cliente['provincia'] ?? '',
            '{provincia_cliente}' => $cliente['provincia'] ?? '',
            '{cliente_pais}' => $cliente['Pais'] ?? '',
            '{pais_cliente}' => $cliente['Pais'] ?? '',
            '{cliente_cpf_cnpj}' => $cliente['CPF_CNPJ'] ?? '',
            '{cpf_cnpj_cliente}' => $cliente['CPF_CNPJ'] ?? '',
            '{cliente_origem}' => $cliente['Origem'] ?? '',
            '{origem_cliente}' => $cliente['Origem'] ?? '',
            '{cliente_instagram}' => $cliente['instagram'] ?? '',
            '{instagram_cliente}' => $cliente['instagram'] ?? '',
            '{cliente_linkedin}' => $cliente['linkedin'] ?? '',
            '{linkedin_cliente}' => $cliente['linkedin'] ?? '',
            '{cliente_funil}' => $cliente['nome_funil'] ?? '',
            '{funil_cliente}' => $cliente['nome_funil'] ?? '',
            '{cliente_etapa}' => $cliente['nome_etapa'] ?? '',
            '{etapa_cliente}' => $cliente['nome_etapa'] ?? '',
            '{cliente_responsavel}' => $cliente['nome_responsavel'] ?? '',
            '{responsavel_cliente}' => $cliente['nome_responsavel'] ?? '',
            '{cliente_observacoes}' => $cliente['Observacoes'] ?? '',
            '{observacoes_cliente}' => $cliente['Observacoes'] ?? '',
            '{data_cadastro}' => date('d/m/Y', strtotime($cliente['Data_Cadastro'])),
            '{data_atual}' => date('d/m/Y'),
            '{data}' => date('d/m/Y'),
            '{hora_atual}' => date('H:i:s'),
            '{hora}' => date('H:i:s'),
            '{data_hora}' => date('d/m/Y H:i:s'),
            '{url_sistema}' => (isset($_SERVER['HTTPS']) ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'],
            '{sistema_nome}' => 'SON',
            '{tenant_nome}' => $cliente['nome_tenant'] ?? '',
            '{responsavel_nome}' => $cliente['nome_responsavel'] ?? '',
            '{responsavel_email}' => $cliente['email_responsavel'] ?? '',
            '{usuario_cadastro}' => $cliente['nome_usuario_cadastro'] ?? ''
        ];
        
        return str_replace(
            array_keys($substituicoes),
            array_values($substituicoes),
            $conteudo
        );
        
    } catch (Exception $e) {
        error_log("Erro ao substituir variáveis: " . $e->getMessage());
        return $conteudo;
    }
}

/**
 * ✅ FUNÇÃO CORRIGIDA: Processar HTML para email (converter classes Quill em estilos inline)
 */
function processarHtmlParaEmail($html) {
    if (empty($html)) return '';
    
    // Mapeamento de classes do Quill para estilos CSS
    $substituicoes = [
        // Alinhamento
        'ql-align-center' => 'text-align: center;',
        'ql-align-right' => 'text-align: right;',
        'ql-align-justify' => 'text-align: justify;',
        
        // Tamanhos de fonte
        'ql-size-small' => 'font-size: 0.75em;',
        'ql-size-large' => 'font-size: 1.5em;',
        'ql-size-huge' => 'font-size: 2.5em;',
        
        // Formatação de texto
        'ql-bold' => 'font-weight: bold;',
        'ql-italic' => 'font-style: italic;',
        'ql-underline' => 'text-decoration: underline;',
        'ql-strike' => 'text-decoration: line-through;',
        
        // Cores
        'ql-color-white' => 'color: #ffffff;',
        'ql-color-red' => 'color: #ff0000;',
        'ql-color-orange' => 'color: #ff9900;',
        'ql-color-yellow' => 'color: #ffff00;',
        'ql-color-green' => 'color: #00ff00;',
        'ql-color-blue' => 'color: #0000ff;',
        'ql-color-purple' => 'color: #9900ff;',
        
        // Fundo
        'ql-background-white' => 'background-color: #ffffff;',
        'ql-background-red' => 'background-color: #ff0000;',
        'ql-background-orange' => 'background-color: #ff9900;',
        'ql-background-yellow' => 'background-color: #ffff00;',
        'ql-background-green' => 'background-color: #00ff00;',
        'ql-background-blue' => 'background-color: #0000ff;',
        'ql-background-purple' => 'background-color: #9900ff;',
        
        // Listas
        'ql-list' => 'margin-left: 1.5em;',
        'ql-bullet' => 'list-style-type: disc;',
        
        // Blocos
        'ql-indent-1' => 'margin-left: 2em;',
        'ql-indent-2' => 'margin-left: 4em;',
        'ql-indent-3' => 'margin-left: 6em;',
        'ql-indent-4' => 'margin-left: 8em;',
        'ql-indent-5' => 'margin-left: 10em;',
        'ql-indent-6' => 'margin-left: 12em;',
        'ql-indent-7' => 'margin-left: 14em;',
        'ql-indent-8' => 'margin-left: 16em;'
    ];
    
    // Aplicar substituições de classes para estilos inline
    foreach ($substituicoes as $classe => $estilo) {
        $html = str_replace('class="' . $classe . '"', 'style="' . $estilo . '"', $html);
        $html = str_replace("class='$classe'", 'style="' . $estilo . '"', $html);
    }
    
    // Remover tags html completas se existirem para evitar duplicação
    $html = preg_replace('/<!DOCTYPE.*?>/', '', $html);
    $html = preg_replace('/<html.*?>/', '', $html);
    $html = preg_replace('/<\/html>/', '', $html);
    $html = preg_replace('/<head>.*?<\/head>/s', '', $html);
    $html = preg_replace('/<body.*?>/', '', $html);
    $html = preg_replace('/<\/body>/', '', $html);
    
    return $html;
}

/**
 * ✅ FUNÇÃO CORRIGIDA: Carregar template de e-mail (incluindo html_customizado)
 */
function carregarTemplate($conn, $templateId, $tenantId) {
    try {
        // Verificar se a coluna html_customizado existe
        $checkColumn = $conn->query("SHOW COLUMNS FROM templates_email LIKE 'html_customizado'");
        $hasHtmlColumn = $checkColumn->num_rows > 0;
        
        $checkColumn = $conn->query("SHOW COLUMNS FROM templates_email LIKE 'incluir_assinatura'");
        $hasAssinaturaColumn = $checkColumn->num_rows > 0;
        
        // Construir a query baseada nas colunas disponíveis
        if ($hasHtmlColumn) {
            // TEM a coluna html_customizado
            $sql = "SELECT id, nome, assunto, conteudo, html_customizado, ";
            $sql .= $hasAssinaturaColumn ? "incluir_assinatura" : "1 as incluir_assinatura";
            $sql .= " FROM templates_email WHERE id = ? AND tenant_id = ? AND ativo = 1";
            
            $stmt = $conn->prepare($sql);
            $stmt->bind_param("ii", $templateId, $tenantId);
        } else {
            // NÃO tem a coluna html_customizado
            $sql = "SELECT id, nome, assunto, conteudo, ";
            $sql .= $hasAssinaturaColumn ? "incluir_assinatura" : "1 as incluir_assinatura";
            $sql .= " FROM templates_email WHERE id = ? AND tenant_id = ? AND ativo = 1";
            
            $stmt = $conn->prepare($sql);
            $stmt->bind_param("ii", $templateId, $tenantId);
        }
        
        $stmt->execute();
        $result = $stmt->get_result();
        
        if ($result->num_rows > 0) {
            $template = $result->fetch_assoc();
            
            // ✅ DECISÃO: Se tem html_customizado e não está vazio, usa ele
            $mensagem = '';
            if (isset($template['html_customizado']) && !empty($template['html_customizado'])) {
                $mensagem = $template['html_customizado'];
                error_log("Template ID $templateId: Usando HTML personalizado");
            } else {
                $mensagem = $template['conteudo'];
                error_log("Template ID $templateId: Usando conteúdo visual");
            }
            
            // Verificar se a mensagem está vazia
            if (empty($mensagem)) {
                $mensagem = "<p style='color: #999;'>[Conteúdo do template vazio]</p>";
            }
            
            return [
                'success' => true,
                'assunto' => $template['assunto'],
                'mensagem' => $mensagem,
                'incluir_assinatura' => $template['incluir_assinatura'] ?? 1,
                'tipo' => isset($template['html_customizado']) && !empty($template['html_customizado']) ? 'html_customizado' : 'visual'
            ];
        } else {
            return ['success' => false, 'message' => 'Template não encontrado'];
        }
        
        $stmt->close();
    } catch (Exception $e) {
        error_log("Erro ao carregar template: " . $e->getMessage());
        return ['success' => false, 'message' => 'Erro ao carregar template: ' . $e->getMessage()];
    }
}

/**
 * Carregar templates de e-mail para o select
 */
function carregarTemplatesEmail($conn, $tenantId) {
    try {
        // Verificar se a coluna html_customizado existe
        $checkColumn = $conn->query("SHOW COLUMNS FROM templates_email LIKE 'html_customizado'");
        $hasHtmlColumn = $checkColumn->num_rows > 0;
        
        $checkColumn = $conn->query("SHOW COLUMNS FROM templates_email LIKE 'incluir_assinatura'");
        $hasAssinaturaColumn = $checkColumn->num_rows > 0;
        
        // Construir a query
        if ($hasAssinaturaColumn) {
            $sql = "SELECT id, nome, assunto, ";
            $sql .= $hasHtmlColumn ? "html_customizado, " : "";
            $sql .= "conteudo, incluir_assinatura 
                    FROM templates_email 
                    WHERE tenant_id = ? 
                    AND ativo = 1
                    ORDER BY nome";
        } else {
            $sql = "SELECT id, nome, assunto, ";
            $sql .= $hasHtmlColumn ? "html_customizado, " : "";
            $sql .= "conteudo, 1 as incluir_assinatura 
                    FROM templates_email 
                    WHERE tenant_id = ? 
                    AND ativo = 1
                    ORDER BY nome";
        }
        
        $stmt = $conn->prepare($sql);
        $stmt->bind_param("i", $tenantId);
        $stmt->execute();
        $result = $stmt->get_result();
        
        $templates = [];
        while ($row = $result->fetch_assoc()) {
            // Determinar se tem HTML personalizado
            if ($hasHtmlColumn && !empty($row['html_customizado'])) {
                $row['tem_html_customizado'] = true;
            } else {
                $row['tem_html_customizado'] = false;
            }
            $templates[] = $row;
        }
        
        $stmt->close();
        return $templates;
        
    } catch (Exception $e) {
        error_log("Erro ao carregar templates: " . $e->getMessage());
        return [];
    }
}

/**
 * Carregar clientes do usuário logado
 */
function carregarClientesUsuario($conn, $usuarioId, $tenantId) {
    try {
        $stmt = $conn->prepare("
            SELECT DISTINCT c.id, c.Nome_Cliente, c.Email 
            FROM clientes c 
            WHERE c.tenant_id = ? 
            AND c.responsavel = ?
            AND c.deletado_em IS NULL
            AND c.Email IS NOT NULL
            AND c.Email != ''
            ORDER BY c.Nome_Cliente
        ");
        $stmt->bind_param("ii", $tenantId, $usuarioId);
        $stmt->execute();
        $result = $stmt->get_result();
        
        $clientes = [];
        while ($row = $result->fetch_assoc()) {
            $clientes[] = $row;
        }
        
        $stmt->close();
        return $clientes;
        
    } catch (Exception $e) {
        error_log("Erro ao carregar clientes: " . $e->getMessage());
        return [];
    }
}

/**
 * Registrar log de e-mail enviado
 */
function registrarLogEmail($conn, $clienteId, $usuarioId, $nomeUsuario, $assunto, $destinatario, $mensagem, $tenantId) {
    try {
        $acao = "email_enviado";
        
        $mensagemLog = $mensagem;
        if (strlen($mensagemLog) > 1000) {
            $mensagemLog = substr($mensagemLog, 0, 1000) . "... [mensagem truncada]";
        }
        
        $detalhes = "E-mail enviado para o cliente.\nAssunto: \"$assunto\"\nDestinatário: $destinatario\n\nConteúdo:\n$mensagemLog";
        
        $stmt = $conn->prepare("
            INSERT INTO cliente_logs 
            (cliente_id, usuario_id, nome_usuario, acao, detalhes, tenant_id, observacao_id) 
            VALUES (?, ?, ?, ?, ?, ?, 0)
        ");
        $stmt->bind_param("iissss", $clienteId, $usuarioId, $nomeUsuario, $acao, $detalhes, $tenantId);
        $result = $stmt->execute();
        $stmt->close();
        
        return $result;
        
    } catch (Exception $e) {
        error_log("Erro ao registrar log de e-mail: " . $e->getMessage());
        return false;
    }
}

// ========== PROCESSAMENTO PRINCIPAL ========== //

// Carregar dados para assinatura
$dadosAssinatura = carregarDadosAssinatura($conn, $tenant_id, $usuario_id);
$assinatura = $dadosAssinatura ? gerarAssinatura($dadosAssinatura) : '';

// Carregar clientes e templates
$clientes = carregarClientesUsuario($conn, $usuario_id, $tenant_id);
$templates = carregarTemplatesEmail($conn, $tenant_id);

// Processar envio de e-mail
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    
    if (isset($_POST['acao']) && $_POST['acao'] === 'enviar_email') {
        // Validar CSRF token
        if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
            $_SESSION['mensagem'] = "Token de segurança inválido";
            $_SESSION['mensagem_tipo'] = 'erro';
            header("Location: enviar_email.php");
            exit();
        }
        
        // Obter dados do formulário
        $clienteId = (int) ($_POST['cliente_id'] ?? 0);
        $destinatario = trim($_POST['destinatario'] ?? '');
        $assunto = trim($_POST['assunto'] ?? '');
        $mensagem = trim($_POST['mensagem'] ?? ''); // HTML do Quill ou template
        $incluirAssinatura = isset($_POST['incluir_assinatura']);
        $templateId = isset($_POST['template_id']) ? (int)$_POST['template_id'] : 0;
        
        // Validações
        if ($clienteId === 0) {
            $_SESSION['mensagem'] = "Selecione um cliente da lista";
            $_SESSION['mensagem_tipo'] = 'erro';
            header("Location: enviar_email.php");
            exit();
        }
        
        // Verificar se o cliente pertence ao usuário logado
        $clienteValido = false;
        $clienteSelecionado = null;
        foreach ($clientes as $cliente) {
            if ($cliente['id'] == $clienteId) {
                $clienteValido = true;
                $clienteSelecionado = $cliente;
                $destinatario = $cliente['Email'];
                break;
            }
        }
        
        if (!$clienteValido) {
            $_SESSION['mensagem'] = "Cliente selecionado não é válido ou não pertence ao seu acesso";
            $_SESSION['mensagem_tipo'] = 'erro';
            header("Location: enviar_email.php");
            exit();
        }
        
        if (empty($destinatario) || !filter_var($destinatario, FILTER_VALIDATE_EMAIL)) {
            $_SESSION['mensagem'] = "E-mail do destinatário é obrigatório e deve ser válido";
            $_SESSION['mensagem_tipo'] = 'erro';
            header("Location: enviar_email.php");
            exit();
        }
        
        if (empty($assunto)) {
            $_SESSION['mensagem'] = "Assunto é obrigatório";
            $_SESSION['mensagem_tipo'] = 'erro';
            header("Location: enviar_email.php");
            exit();
        }
        
        if (empty($mensagem)) {
            $_SESSION['mensagem'] = "Mensagem é obrigatória";
            $_SESSION['mensagem_tipo'] = 'erro';
            header("Location: enviar_email.php");
            exit();
        }
        
        // ✅ CORREÇÃO: Processar HTML para email (converter classes Quill em estilos inline)
        $mensagemFinal = processarHtmlParaEmail($mensagem);
        
        // APLICAR SUBSTITUIÇÃO DE VARIÁVEIS NA MENSAGEM
        $mensagemFinal = substituirVariaveisEmail($mensagemFinal, $clienteId, $conn, $tenant_id);
        
        // Verificar configuração de assinatura do template
        $templateIncluirAssinatura = false;
        if ($templateId > 0) {
            $templateInfo = carregarTemplate($conn, $templateId, $tenant_id);
            if ($templateInfo['success']) {
                $templateIncluirAssinatura = $templateInfo['incluir_assinatura'];
            }
        }
        
        // Aplicar assinatura se necessário
        $deveIncluirAssinatura = $incluirAssinatura || $templateIncluirAssinatura;
        
        if ($deveIncluirAssinatura && !empty($assinatura)) {
            $mensagemFinal .= $assinatura;
        }
        
        // APLICAR SUBSTITUIÇÃO DE VARIÁVEIS NO ASSUNTO
        $assuntoFinal = substituirVariaveisEmail($assunto, $clienteId, $conn, $tenant_id);
        
        // Nome do remetente
        $nomeRemetente = $_SESSION['nome_usuario'] ?? 'Usuário';
        $emailRemetenteReplyTo = $_SESSION['email_usuario'] ?? '';
        
        // ENVIAR E-MAIL
        $resultadoEnvio = enviarEmail(
            $destinatario,
            $assuntoFinal,
            $mensagemFinal,
            $nomeRemetente,
            $emailRemetenteReplyTo
        );
        
        if ($resultadoEnvio['success']) {
            // Registrar log do e-mail enviado
            $logRegistrado = registrarLogEmail(
                $conn, 
                $clienteId, 
                $usuario_id, 
                $nomeRemetente, 
                $assuntoFinal,
                $destinatario,
                $mensagemFinal,
                $tenant_id
            );
            
            $infoAssinatura = $deveIncluirAssinatura ? " com assinatura" : " sem assinatura";
            $_SESSION['mensagem'] = "✅ E-mail enviado com sucesso para $destinatario $infoAssinatura";
            $_SESSION['mensagem_tipo'] = 'sucesso';
            
            // Log do envio em arquivo
            $logFile = 'logs/email_envios.log';
            $dataHora = date('Y-m-d H:i:s');
            $logMessage = "[$dataHora] [Usuário: $nomeRemetente] [Cliente ID: $clienteId] [Para: $destinatario] [Assunto: $assuntoFinal] [Assinatura: " . ($deveIncluirAssinatura ? 'Sim' : 'Não') . "] Enviado com sucesso\n";
            
            if (!file_exists('logs')) mkdir('logs', 0755, true);
            file_put_contents($logFile, $logMessage, FILE_APPEND);
            
        } else {
            $_SESSION['mensagem'] = "❌ Erro ao enviar e-mail: " . $resultadoEnvio['message'];
            $_SESSION['mensagem_tipo'] = 'erro';
            
            // Log de erro
            $logFile = 'logs/email_erros.log';
            $dataHora = date('Y-m-d H:i:s');
            $logMessage = "[$dataHora] [Usuário: $nomeRemetente] [Erro: " . $resultadoEnvio['message'] . "] [Para: $destinatario]\n";
            
            if (!file_exists('logs')) mkdir('logs', 0755, true);
            file_put_contents($logFile, $logMessage, FILE_APPEND);
        }
        
        header("Location: enviar_email.php");
        exit();
    }
    
    // Processar carregamento de template via AJAX
    if (isset($_POST['acao']) && $_POST['acao'] === 'carregar_template') {
        $templateId = (int) ($_POST['template_id'] ?? 0);
        
        if ($templateId > 0) {
            $resultado = carregarTemplate($conn, $templateId, $tenant_id);
            echo json_encode($resultado);
            exit();
        }
    }
}

// Gerar um ID único para o localStorage
$storageKey = 'email_draft_' . md5($usuario_id . '_' . session_id());
?>

<!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 - Enviar E-mail</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">
    <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
    <!-- Quill Editor CSS -->
    <link href="https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.snow.css" rel="stylesheet">
    <style>
        * {
            box-sizing: border-box;
            margin: 0;
            padding: 0;
        }

        body {
            font-family: Arial, sans-serif;
            background-color: #f5f5f5;
            min-height: 100vh;
        }
        
        .header-fixed {
            position: fixed;
            top: 0;
            left: 60px;
            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;
            height: 70px;
        }
        
        .header-fixed img {
            height: 40px;
        }
        
        /* Menu Lateral */
        .sidebar {
            position: fixed;
            left: 0;
            top: 0;
            height: 100vh;
            width: 60px;
            background: white;
            box-shadow: 2px 0 5px rgba(0,0,0,0.1);
            z-index: 1000;
            transition: width 0.3s ease;
            overflow-x: hidden;
        }
        
        .sidebar:hover {
            width: 250px;
        }
        
        .sidebar ul {
            list-style: none;
            padding: 70px 0 20px 0;
            margin: 0;
        }
        
        .sidebar li {
            border-bottom: 1px solid #eee;
        }
        
        .sidebar a {
            display: flex;
            align-items: center;
            padding: 15px 20px;
            text-decoration: none;
            color: #333;
            white-space: nowrap;
            transition: background-color 0.3s;
        }
        
        .sidebar a:hover {
            background-color: #f0f0f0;
        }
        
        .sidebar i {
            width: 24px;
            height: 24px;
            margin-right: 15px;
            text-align: center;
            flex-shrink: 0;
        }
        
        .sidebar span {
            display: none;
        }
        
        .sidebar:hover span {
            display: inline;
        }
        
        /* Conteúdo Principal */
        .content-wrapper {
            margin-left: 60px;
            margin-top: 20px;
            padding: 20px;
            transition: margin-left 0.3s ease;
        }
        
        .container {
            max-width: 1200px;
            margin: 0 auto;
            background: white;
            padding: 30px;
            border-radius: 8px;
            box-shadow: 0 0 15px rgba(0, 0, 0, 0.05);
        }
        
        h1 {
            color: #333;
            border-bottom: 1px solid #eee;
            padding-bottom: 15px;
            display: flex;
            align-items: center;
            gap: 10px;
            margin-bottom: 30px;
        }
        
        /* Alertas */
        .alert {
            padding: 15px;
            border-radius: 6px;
            margin-bottom: 25px;
            display: flex;
            align-items: center;
            gap: 12px;
            animation: slideIn 0.3s ease;
        }
        
        @keyframes slideIn {
            from {
                opacity: 0;
                transform: translateY(-10px);
            }
            to {
                opacity: 1;
                transform: translateY(0);
            }
        }
        
        .alert-success {
            background: #d4edda;
            border: 1px solid #c3e6cb;
            color: #155724;
        }
        
        .alert-error {
            background: #f8d7da;
            border: 1px solid #f5c6cb;
            color: #721c24;
        }
        
        /* Formulário */
        .section {
            margin-bottom: 30px;
            padding: 25px;
            background: #f9f9f9;
            border-radius: 8px;
            border: 1px solid #eee;
            transition: opacity 0.3s ease;
        }
        
        .section-title {
            font-size: 20px;
            color: #2c3e50;
            margin-bottom: 20px;
            display: flex;
            align-items: center;
            gap: 10px;
        }
        
        .form-group {
            margin-bottom: 20px;
        }
        
        label {
            display: block;
            margin-bottom: 8px;
            font-weight: 600;
            color: #2c3e50;
        }
        
        input, select {
            width: 100%;
            padding: 12px 15px;
            border: 1px solid #ddd;
            border-radius: 4px;
            font-size: 16px;
            transition: border-color 0.3s;
        }
        
        input:focus, select:focus {
            border-color: #3498db;
            outline: none;
            box-shadow: 0 0 0 2px rgba(52, 152, 219, 0.2);
        }
        
        /* Quill Editor */
        .editor-container {
            border: 1px solid #ddd;
            border-radius: 4px;
            margin-top: 5px;
            background-color: white;
        }
        
        #editor {
            height: 300px;
            background-color: white;
        }
        
        .ql-editor {
            min-height: 280px;
            font-size: 14px;
            line-height: 1.6;
        }
        
        .ql-editor p {
            margin-bottom: 1em;
        }
        
        .ql-editor ul, .ql-editor ol {
            margin-bottom: 1em;
            padding-left: 2em;
        }
        
        .ql-editor blockquote {
            margin: 1em 0;
            padding-left: 1em;
            border-left: 4px solid #ccc;
        }
        
        .ql-toolbar {
            background: #f8f9fa;
            border-radius: 4px 4px 0 0;
            border-bottom: 1px solid #ddd;
        }
        
        /* Templates */
        .templates-container {
            display: flex;
            gap: 15px;
            margin-bottom: 20px;
            flex-wrap: wrap;
        }
        
        .template-btn {
            padding: 12px 20px;
            background: #edf2f7;
            border: 2px solid #cbd5e0;
            border-radius: 6px;
            font-weight: 600;
            color: #4a5568;
            cursor: pointer;
            transition: all 0.3s ease;
            display: flex;
            align-items: center;
            gap: 8px;
        }
        
        .template-btn:hover {
            background: #e2e8f0;
        }
        
        .template-btn.active {
            background: #3498db;
            color: white;
            border-color: #3498db;
        }
        
        .template-select {
            padding: 12px 15px;
            border: 1px solid #ddd;
            border-radius: 4px;
            font-size: 16px;
            background: white;
            min-width: 300px;
        }
        
        .template-info {
            background: #e6f7ff;
            border: 1px solid #91d5ff;
            border-radius: 6px;
            padding: 15px;
            margin-top: 15px;
            color: #0050b3;
            display: none;
        }
        
        /* Assinatura */
        .assinatura-preview {
            background: white;
            border: 1px dashed #ddd;
            border-radius: 6px;
            padding: 20px;
            margin-top: 15px;
            max-height: 200px;
            overflow-y: auto;
        }
        
        .assinatura-preview * {
            max-width: 100%;
        }
        
        .checkbox-group {
            display: flex;
            align-items: center;
            gap: 10px;
            margin-top: 15px;
        }
        
        .checkbox-group input[type="checkbox"] {
            width: 18px;
            height: 18px;
        }
        
        /* ✅ PRÉVIA CORRIGIDA - Apenas dentro da caixa */
        .previa-section {
            margin-top: 20px;
            margin-bottom: 30px;
            background: #f0f7ff;
            border: 1px solid #b8daff;
            border-radius: 8px;
            padding: 20px;
        }
        
        .previa-container {
            background: white;
            border: 1px solid #b8daff;
            border-radius: 6px;
            padding: 20px;
            min-height: 200px;
            max-height: 400px;
            overflow-y: auto;
            font-family: Arial, sans-serif;
            font-size: 14px;
            line-height: 1.6;
        }
        
        /* Reset de estilos para a prévia */
        .previa-container * {
            max-width: 100%;
        }
        
        .previa-container img {
            max-width: 100%;
            height: auto;
        }
        
        .previa-actions {
            display: flex;
            gap: 10px;
            margin-top: 15px;
        }
        
        .btn-sm {
            padding: 8px 15px;
            font-size: 13px;
            background-color: #6c757d;
        }
        
        /* Botões */
        .form-actions {
            display: flex;
            gap: 15px;
            margin-top: 30px;
            padding-top: 25px;
            border-top: 1px solid #eee;
        }
        
        .btn {
            padding: 12px 25px;
            border: none;
            border-radius: 6px;
            font-weight: 600;
            font-size: 16px;
            cursor: pointer;
            transition: all 0.3s;
            display: inline-flex;
            align-items: center;
            gap: 8px;
        }
        
        .btn-primary {
            background-color: #3498db;
            color: white;
        }
        
        .btn-primary:hover {
            background-color: #2980b9;
        }
        
        .btn-secondary {
            background-color: #718096;
            color: white;
        }
        
        .btn-secondary:hover {
            background-color: #4a5568;
        }
        
        .btn-success {
            background-color: #2ecc71;
            color: white;
        }
        
        .btn-success:hover {
            background-color: #27ae60;
        }
        
        /* Estado vazio */
        .empty-state {
            text-align: center;
            padding: 50px 30px;
            background: #f8fafc;
            border-radius: 8px;
            border: 2px dashed #cbd5e0;
        }
        
        .empty-state i {
            font-size: 48px;
            color: #cbd5e0;
            margin-bottom: 20px;
        }
        
        .empty-state h3 {
            font-size: 20px;
            color: #4a5568;
            margin-bottom: 15px;
        }
        
        /* Utilitários */
        .text-muted {
            color: #6c757d;
            font-size: 0.9em;
        }
        
        /* Responsividade */
        @media (max-width: 768px) {
            .header-fixed {
                left: 0;
                padding: 10px;
            }
            
            .content-wrapper {
                margin-left: 0;
                padding: 10px;
            }
            
            .sidebar {
                display: none;
            }
            
            .container {
                padding: 15px;
            }
            
            .templates-container {
                flex-direction: column;
            }
            
            .template-select {
                width: 100%;
            }
            
            .form-actions {
                flex-direction: column;
            }
            
            .btn {
                width: 100%;
                justify-content: center;
            }
        }
    </style>
</head>
<body>
    <!-- Cabeçalho Fixo -->
    <div class="header-fixed">
        <img src="tvitec.png" alt="Logo TVITEC">
        
        <div style="flex-grow: 1; display: flex; align-items: center; justify-content: center; gap: 12px;">
            <h2 style="margin: 0;">Sistema de Organização de Negócios</h2>
        </div>
        
        <div class="user-info" style="display:flex; align-items:center; gap:10px;">
            <?php if (!empty($_SESSION['foto_perfil'])): ?>
                <img src="<?php echo htmlspecialchars($_SESSION['foto_perfil']); ?>" class="user-photo" alt="Foto do usuário" style="width:40px; height:40px; border-radius:50%; object-fit:cover;">
            <?php else: ?>
                <div class="user-initial" style="width:40px; height:40px; border-radius:50%; background:#007bff; display:flex; align-items:center; justify-content:center; font-weight:bold; font-size:1.2em; color:white;">
                    <?php echo strtoupper(substr($_SESSION['nome_usuario'] ?? 'U', 0, 1)); ?>
                </div>
            <?php endif; ?>
            <div style="text-align:left;">
                <div style="font-weight: bold; color: #333; font-size: 1.1em;">
                    <?php echo htmlspecialchars($_SESSION['nome_usuario'] ?? 'Usuário'); ?>
                </div>
                <div style="font-size: 0.9em; color: #666;">
                    <span style="font-weight: normal;">enviado por:</span> 
                    <?php echo htmlspecialchars($_SESSION['email_usuario'] ?? ''); ?>
                </div>
            </div>
        </div>
    </div>
    
    <?php include 'menu_lateral.php'; ?>
    
    <!-- Conteúdo Principal -->
    <div class="content-wrapper">
        <div class="container">
            <h1><i class="fas fa-paper-plane"></i> Enviar E-mail</h1>
            
            <!-- Mensagens de Alerta -->
            <?php if (isset($_SESSION['mensagem'])): ?>
                <div class="alert <?php echo ($_SESSION['mensagem_tipo'] ?? '') === 'sucesso' ? 'alert-success' : 'alert-error'; ?>" id="mensagem-alert">
                    <i class="fas <?php echo ($_SESSION['mensagem_tipo'] ?? '') === 'sucesso' ? 'fa-check-circle' : 'fa-exclamation-circle'; ?>"></i>
                    <div style="flex: 1;">
                        <strong><?php echo ($_SESSION['mensagem_tipo'] ?? '') === 'sucesso' ? 'Sucesso!' : 'Atenção!'; ?></strong>
                        <div><?php echo htmlspecialchars($_SESSION['mensagem']); ?></div>
                    </div>
                    <button type="button" style="background: none; border: none; color: inherit; cursor: pointer; font-size: 20px;" onclick="this.parentElement.style.display='none'">
                        <i class="fas fa-times"></i>
                    </button>
                </div>
                
                <script>
                    setTimeout(function() {
                        var alertDiv = document.getElementById('mensagem-alert');
                        if (alertDiv) {
                            alertDiv.style.display = 'none';
                        }
                    }, 8000);
                </script>
                
                <?php 
                unset($_SESSION['mensagem']);
                unset($_SESSION['mensagem_tipo']);
                ?>
            <?php endif; ?>
            
            <!-- Sem Clientes -->
            <?php if (empty($clientes)): ?>
                <div class="empty-state">
                    <i class="fas fa-users-slash"></i>
                    <h3>Nenhum Cliente Disponível</h3>
                    <p>Você não possui clientes cadastrados com e-mail válido onde você é o responsável.</p>
                    <div style="display: flex; gap: 15px; justify-content: center;">
                        <a href="cadastrar_cliente.php" class="btn btn-primary">
                            <i class="fas fa-plus"></i> Cadastrar Cliente
                        </a>
                        <a href="lista_clientes.php" class="btn btn-secondary">
                            <i class="fas fa-users"></i> Ver Todos Clientes
                        </a>
                    </div>
                </div>
            <?php endif; ?>
            
            <!-- Formulário de Envio -->
            <?php if (!empty($clientes)): ?>
                <form method="POST" action="" id="formEnviarEmail">
                    <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
                    <input type="hidden" name="acao" value="enviar_email">
                    <input type="hidden" name="template_id" id="template_id" value="">
                    <input type="hidden" name="mensagem" id="mensagem" value="">
                    
                    <!-- Seção de Templates -->
                    <?php if (!empty($templates)): ?>
                    <div class="section">
                        <h3 class="section-title"><i class="fas fa-file-alt"></i> Usar Template</h3>
                        <p class="text-muted" style="margin-bottom: 20px;">Escolha um template pronto ou escreva seu e-mail do zero:</p>
                        
                        <div class="templates-container">
                            <button type="button" class="template-btn active" id="btnNovoEmail" onclick="selecionarModo('novo')">
                                <i class="fas fa-edit"></i> Escrever do Zero
                            </button>
                            <button type="button" class="template-btn" id="btnUsarTemplate" onclick="selecionarModo('template')">
                                <i class="fas fa-file-alt"></i> Usar Template
                            </button>
                            
                            <select class="template-select" id="selectTemplate" onchange="carregarTemplate()" style="display: none;">
                                <option value="">-- Selecione um template --</option>
                                <?php foreach ($templates as $template): ?>
                                    <option value="<?php echo $template['id']; ?>" data-assinatura="<?php echo $template['incluir_assinatura'] ? 'sim' : 'nao'; ?>" <?php echo isset($template['tem_html_customizado']) && $template['tem_html_customizado'] ? 'data-html="sim"' : ''; ?>>
                                        <?php echo htmlspecialchars($template['nome']); ?>
                                        <?php if (isset($template['tem_html_customizado']) && $template['tem_html_customizado']): ?>
                                            [HTML Personalizado]
                                        <?php endif; ?>
                                        <?php if ($template['incluir_assinatura']): ?>
                                            (com assinatura)
                                        <?php endif; ?>
                                    </option>
                                <?php endforeach; ?>
                            </select>
                        </div>
                        <div class="template-info" id="templateInfo">
                            <i class="fas fa-info-circle"></i>
                            <span id="templateInfoText">Este template inclui assinatura automaticamente.</span>
                        </div>
                    </div>
                    <?php endif; ?>
                    
                    <!-- Seção de Assinatura -->
                    <?php if (!empty($assinatura)): ?>
                    <div class="section">
                        <h3 class="section-title"><i class="fas fa-signature"></i> Assinatura de E-mail</h3>
                        <p class="text-muted" style="margin-bottom: 15px;">Sua assinatura será incluída automaticamente no final do e-mail.</p>
                        
                        <div class="assinatura-preview">
                            <?php 
                            if (!empty($assinatura)) {
                                echo $assinatura;
                            }
                            ?>
                        </div>
                        
                        <div class="checkbox-group">
                            <input type="checkbox" id="incluir_assinatura" name="incluir_assinatura" value="1" checked>
                            <label for="incluir_assinatura">
                                Incluir minha assinatura no e-mail
                            </label>
                        </div>
                    </div>
                    <?php endif; ?>
                    
                    <!-- Seção de Cliente e Destinatário -->
                    <div class="section">
                        <h3 class="section-title"><i class="fas fa-user"></i> Destinatário</h3>
                        <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 20px;">
                            <div class="form-group">
                                <label for="cliente_id">Selecionar Cliente *</label>
                                <select class="form-control" id="cliente_id" name="cliente_id" required onchange="atualizarEmail()">
                                    <option value="">-- Selecione um cliente --</option>
                                    <?php foreach ($clientes as $cliente): ?>
                                        <option value="<?php echo $cliente['id']; ?>" data-email="<?php echo htmlspecialchars($cliente['Email']); ?>">
                                            <?php echo htmlspecialchars($cliente['Nome_Cliente']); ?> - <?php echo htmlspecialchars($cliente['Email']); ?>
                                        </option>
                                    <?php endforeach; ?>
                                </select>
                                <small class="text-muted" style="margin-top: 5px; display: block;">
                                    Apenas clientes onde você é o responsável são exibidos.
                                </small>
                            </div>
                            
                            <div class="form-group">
                                <label for="destinatario">E-mail do Destinatário *</label>
                                <input type="email" class="form-control" id="destinatario" name="destinatario" 
                                       placeholder="Será preenchido automaticamente" readonly>
                            </div>
                        </div>
                    </div>
                    
                    <!-- Seção de Assunto -->
                    <div class="section">
                        <h3 class="section-title"><i class="fas fa-tag"></i> Assunto</h3>
                        <div class="form-group">
                            <input type="text" class="form-control" id="assunto" name="assunto" 
                                   placeholder="Digite o assunto do e-mail" required>
                        </div>
                    </div>
                    
                    <!-- Seção de Conteúdo com Editor Quill (visível apenas no modo "escrever do zero") -->
                    <div class="section" id="secaoConteudo">
                        <h3 class="section-title"><i class="fas fa-envelope-open-text"></i> Conteúdo do E-mail</h3>
                        <div class="form-group">
                            <div class="editor-container">
                                <div id="editor"></div>
                            </div>
                            <small class="text-muted" style="margin-top: 5px; display: block;">
                                Use o editor para formatar o texto. O e-mail será enviado com toda a formatação.
                            </small>
                        </div>
                    </div>
                    
                    <!-- ✅ SEÇÃO DE PRÉVIA - APENAS VISUALIZAÇÃO -->
                    <div class="previa-section">
                        <h3 class="section-title" style="color: #004085; margin-bottom: 15px;">
                            <i class="fas fa-eye"></i> Prévia do E-mail
                        </h3>
                        <p class="text-muted" style="color: #004085; margin-bottom: 15px;">
                            <i class="fas fa-info-circle"></i> 
                            Esta é apenas uma prévia. O conteúdo será enviado exatamente como mostrado abaixo.
                        </p>
                        
                        <!-- Container da prévia - SOMENTE VISUALIZAÇÃO -->
                        <div id="previewMensagem" class="previa-container">
                            <em style="color: #999;">A prévia aparecerá aqui...</em>
                        </div>
                        
                        <div class="previa-actions">
                            <button type="button" class="btn btn-secondary btn-sm" onclick="atualizarPreview()">
                                <i class="fas fa-sync-alt"></i> Atualizar Prévia
                            </button>
                        </div>
                    </div>
                    
                    <!-- Ações do Formulário -->
                    <div class="form-actions">
                        <button type="submit" class="btn btn-primary">
                            <i class="fas fa-paper-plane"></i> Enviar E-mail
                        </button>
                        <button type="button" class="btn btn-secondary" onclick="limparFormulario()">
                            <i class="fas fa-broom"></i> Limpar Formulário
                        </button>
                        <a href="templates_email.php" class="btn btn-success">
                            <i class="fas fa-file-alt"></i> Gerenciar Templates
                        </a>
                    </div>
                </form>
            <?php endif; ?>
        </div>
    </div>
    
    <!-- Quill Editor JS -->
    <script src="https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.js"></script>
    <script>
        // ========== VARIÁVEIS GLOBAIS ==========
        const storageKey = '<?php echo $storageKey; ?>';
        let modoAtual = 'novo';
        let templateAtualId = 0;
        let quill;
        
        // ========== INICIALIZAÇÃO DO QUILL ==========
        document.addEventListener('DOMContentLoaded', function() {
            // Inicializar Quill
            quill = new Quill('#editor', {
                theme: 'snow',
                modules: {
                    toolbar: [
                        [{ 'header': [1, 2, 3, 4, 5, 6, false] }],
                        ['bold', 'italic', 'underline', 'strike'],
                        [{ 'list': 'ordered'}, { 'list': 'bullet' }],
                        [{ 'script': 'sub'}, { 'script': 'super' }],
                        [{ 'indent': '-1'}, { 'indent': '+1' }],
                        [{ 'direction': 'rtl' }],
                        [{ 'size': ['small', false, 'large', 'huge'] }],
                        [{ 'color': [] }, { 'background': [] }],
                        [{ 'font': [] }],
                        [{ 'align': [] }],
                        ['link', 'image', 'clean']
                    ]
                },
                placeholder: 'Digite o conteúdo do e-mail aqui...'
            });
            
            // Carregar rascunho salvo
            const savedMensagem = localStorage.getItem(storageKey + '_mensagem');
            if (savedMensagem) {
                quill.root.innerHTML = savedMensagem;
            }
            
            // Salvar rascunho ao digitar - APENAS no modo novo
            quill.on('text-change', function() {
                if (modoAtual === 'novo') {
                    const conteudo = quill.root.innerHTML;
                    localStorage.setItem(storageKey + '_mensagem', conteudo);
                    atualizarPreview();
                }
            });
            
            // Inicializar no modo "escrever do zero"
            selecionarModo('novo');
            
            // Atualizar prévia inicial
            setTimeout(atualizarPreview, 200);
        });
        
        // ========== FUNÇÕES ==========
        
        function atualizarEmail() {
            const selectCliente = document.getElementById('cliente_id');
            const inputEmail = document.getElementById('destinatario');
            const selectedOption = selectCliente.options[selectCliente.selectedIndex];
            
            if (selectedOption && selectedOption.value !== '') {
                inputEmail.value = selectedOption.getAttribute('data-email');
            } else {
                inputEmail.value = '';
            }
        }
        
        function selecionarModo(modo) {
            modoAtual = modo;
            const btnNovo = document.getElementById('btnNovoEmail');
            const btnTemplate = document.getElementById('btnUsarTemplate');
            const selectTemplate = document.getElementById('selectTemplate');
            const templateInfo = document.getElementById('templateInfo');
            const secaoConteudo = document.getElementById('secaoConteudo');
            
            if (modo === 'novo') {
                btnNovo.classList.add('active');
                btnTemplate.classList.remove('active');
                selectTemplate.style.display = 'none';
                templateInfo.style.display = 'none';
                templateAtualId = 0;
                document.getElementById('template_id').value = '';
                
                // MOSTRAR seção de conteúdo
                if (secaoConteudo) {
                    secaoConteudo.style.display = 'block';
                }
                
                // Limpar input hidden da mensagem
                document.getElementById('mensagem').value = '';
                
                // Atualizar prévia com o conteúdo do Quill
                atualizarPreview();
            } else {
                btnNovo.classList.remove('active');
                btnTemplate.classList.add('active');
                selectTemplate.style.display = 'block';
                
                // ESCONDER seção de conteúdo
                if (secaoConteudo) {
                    secaoConteudo.style.display = 'none';
                }
            }
        }
        
        function atualizarPreview() {
            const previewDiv = document.getElementById('previewMensagem');
            if (!previewDiv) return;
            
            let conteudo = '';
            
            if (modoAtual === 'novo' && quill) {
                // Modo escrever do zero: usar conteúdo do Quill
                conteudo = quill.root.innerHTML;
            } else {
                // Modo template: usar o input hidden (já preenchido pelo template)
                const mensagemInput = document.getElementById('mensagem');
                if (mensagemInput && mensagemInput.value) {
                    conteudo = mensagemInput.value;
                }
            }
            
            if (!conteudo || conteudo.trim() === '' || conteudo === '<p><br></p>') {
                previewDiv.innerHTML = '<em style="color: #999;">A prévia aparecerá aqui...</em>';
                return;
            }
            
            // Mostrar o HTML corretamente APENAS na prévia
            previewDiv.innerHTML = conteudo;
        }
        
        function carregarTemplate() {
            const selectTemplate = document.getElementById('selectTemplate');
            const templateId = selectTemplate.value;
            const templateInfo = document.getElementById('templateInfo');
            const templateInfoText = document.getElementById('templateInfoText');
            const secaoConteudo = document.getElementById('secaoConteudo');
            
            if (!templateId) {
                templateInfo.style.display = 'none';
                templateAtualId = 0;
                document.getElementById('template_id').value = '';
                document.getElementById('mensagem').value = '';
                atualizarPreview();
                return;
            }
            
            templateAtualId = templateId;
            document.getElementById('template_id').value = templateId;
            
            // GARANTIR que a seção de conteúdo está escondida
            if (secaoConteudo) {
                secaoConteudo.style.display = 'none';
            }
            
            // Mostrar loading
            const btnEnviar = document.querySelector('button[type="submit"]');
            const originalText = btnEnviar.innerHTML;
            btnEnviar.disabled = true;
            btnEnviar.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Carregando...';
            
            // Fazer requisição AJAX
            const formData = new FormData();
            formData.append('acao', 'carregar_template');
            formData.append('template_id', templateId);
            formData.append('csrf_token', document.querySelector('input[name="csrf_token"]').value);
            
            fetch('enviar_email.php', {
                method: 'POST',
                body: formData
            })
            .then(response => response.json())
            .then(data => {
                if (data.success) {
                    document.getElementById('assunto').value = data.assunto;
                    
                    // ✅ Armazenar HTML completo no input hidden (para envio)
                    const mensagemInput = document.getElementById('mensagem');
                    mensagemInput.value = data.mensagem;
                    
                    // Mostrar info sobre o tipo de template
                    if (data.tipo === 'html_customizado') {
                        templateInfoText.textContent = 'Template com HTML personalizado. Todo o conteúdo será mantido exatamente como foi salvo.';
                        templateInfo.style.display = 'block';
                    } else {
                        // ATUALIZAR informações sobre assinatura
                        if (data.incluir_assinatura) {
                            templateInfoText.textContent = 'Este template está configurado para incluir assinatura automaticamente.';
                        } else {
                            templateInfoText.textContent = 'Este template não inclui assinatura automaticamente. Marque o checkbox acima se desejar adicionar assinatura.';
                        }
                        templateInfo.style.display = 'block';
                    }
                    
                    // ✅ ATUALIZAR PRÉVIA (apenas visualização)
                    atualizarPreview();
                    
                    // Salvar no localStorage
                    localStorage.setItem(storageKey + '_assunto', data.assunto);
                    
                    Swal.fire({
                        icon: 'success',
                        title: 'Template carregado!',
                        text: 'O template foi carregado com sucesso.',
                        timer: 2000,
                        showConfirmButton: false
                    });
                } else {
                    Swal.fire({
                        icon: 'error',
                        title: 'Erro',
                        text: data.message || 'Erro ao carregar template'
                    });
                    selectTemplate.value = '';
                    templateInfo.style.display = 'none';
                }
            })
            .catch(error => {
                console.error('Erro:', error);
                Swal.fire({
                    icon: 'error',
                    title: 'Erro',
                    text: 'Erro ao carregar template: ' + error.message
                });
                selectTemplate.value = '';
                templateInfo.style.display = 'none';
            })
            .finally(() => {
                btnEnviar.disabled = false;
                btnEnviar.innerHTML = originalText;
            });
        }
        
        function limparFormulario() {
            Swal.fire({
                title: 'Limpar formulário?',
                text: 'Todos os dados não enviados serão perdidos.',
                icon: 'warning',
                showCancelButton: true,
                confirmButtonColor: '#3085d6',
                cancelButtonColor: '#d33',
                confirmButtonText: 'Sim, limpar!',
                cancelButtonText: 'Cancelar'
            }).then((result) => {
                if (result.isConfirmed) {
                    document.getElementById('cliente_id').value = '';
                    document.getElementById('destinatario').value = '';
                    document.getElementById('assunto').value = '';
                    
                    // Limpar Quill
                    if (quill) {
                        quill.root.innerHTML = '';
                    }
                    
                    // Limpar input hidden
                    const mensagemInput = document.getElementById('mensagem');
                    if (mensagemInput) {
                        mensagemInput.value = '';
                    }
                    
                    document.getElementById('selectTemplate').value = '';
                    document.getElementById('template_id').value = '';
                    document.getElementById('incluir_assinatura').checked = true;
                    document.getElementById('templateInfo').style.display = 'none';
                    templateAtualId = 0;
                    
                    // Limpar localStorage
                    localStorage.removeItem(storageKey + '_assunto');
                    localStorage.removeItem(storageKey + '_mensagem');
                    
                    // Limpar prévia
                    document.getElementById('previewMensagem').innerHTML = '<em style="color: #999;">A prévia aparecerá aqui...</em>';
                    
                    // Voltar para modo "escrever do zero" e mostrar conteúdo
                    selecionarModo('novo');
                    
                    Swal.fire(
                        'Limpo!',
                        'O formulário foi limpo com sucesso.',
                        'success'
                    );
                }
            });
        }
        
        // ========== VALIDAÇÃO DO FORMULÁRIO ==========
        document.addEventListener('DOMContentLoaded', function() {
            const formEnviarEmail = document.getElementById('formEnviarEmail');
            if (formEnviarEmail) {
                formEnviarEmail.addEventListener('submit', function(e) {
                    e.preventDefault();
                    
                    let isValid = true;
                    const mensagens = [];
                    
                    // Validar cliente selecionado
                    const clienteId = document.getElementById('cliente_id').value;
                    if (!clienteId || clienteId === '') {
                        mensagens.push('Por favor, selecione um cliente da lista.');
                        isValid = false;
                    }
                    
                    // Validar destinatário
                    const destinatario = document.getElementById('destinatario').value.trim();
                    if (!destinatario) {
                        mensagens.push('E-mail do destinatário não encontrado. Selecione um cliente válido.');
                        isValid = false;
                    } else if (!isValidEmail(destinatario)) {
                        mensagens.push('O e-mail do cliente selecionado não é válido.');
                        isValid = false;
                    }
                    
                    // Validar assunto
                    const assunto = document.getElementById('assunto').value.trim();
                    if (!assunto) {
                        mensagens.push('Por favor, preencha o assunto do e-mail.');
                        isValid = false;
                    }
                    
                    // Validar mensagem (depende do modo)
                    let mensagem = '';
                    if (modoAtual === 'novo' && quill) {
                        mensagem = quill.root.innerHTML;
                        if (!mensagem || mensagem === '<p><br></p>') {
                            mensagens.push('Por favor, escreva o conteúdo do e-mail.');
                            isValid = false;
                        }
                    } else {
                        const mensagemInput = document.getElementById('mensagem');
                        if (mensagemInput) {
                            mensagem = mensagemInput.value;
                            if (!mensagem) {
                                mensagens.push('Por favor, carregue um template.');
                                isValid = false;
                            }
                        } else {
                            mensagens.push('Erro ao obter o conteúdo do e-mail.');
                            isValid = false;
                        }
                    }
                    
                    if (!isValid) {
                        Swal.fire({
                            icon: 'error',
                            title: 'Erro de Validação',
                            html: mensagens.join('<br>')
                        });
                        return;
                    }
                    
                    // Preparar dados para envio
                    if (modoAtual === 'novo' && quill) {
                        // Atualizar input hidden com conteúdo do Quill
                        const mensagemInput = document.getElementById('mensagem');
                        mensagemInput.value = quill.root.innerHTML;
                    }
                    
                    // Mostrar confirmação
                    Swal.fire({
                        title: 'Enviar E-mail?',
                        html: `
                            <div style="text-align: left;">
                                <p><strong>Para:</strong> ${destinatario}</p>
                                <p><strong>Assunto:</strong> ${assunto}</p>
                                <p style="margin-top: 15px; color: #666; font-size: 0.9em;">
                                    O e-mail será enviado através do sistema SON com toda a formatação.
                                </p>
                            </div>
                        `,
                        icon: 'question',
                        showCancelButton: true,
                        confirmButtonColor: '#3085d6',
                        cancelButtonColor: '#d33',
                        confirmButtonText: '<i class="fas fa-paper-plane"></i> Sim, enviar!',
                        cancelButtonText: '<i class="fas fa-times"></i> Cancelar',
                        reverseButtons: true
                    }).then((result) => {
                        if (result.isConfirmed) {
                            // Mostrar loading
                            const btnEnviar = this.querySelector('button[type="submit"]');
                            const originalText = btnEnviar.innerHTML;
                            btnEnviar.disabled = true;
                            btnEnviar.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Enviando...';
                            
                            // Limpar localStorage após envio
                            localStorage.removeItem(storageKey + '_assunto');
                            localStorage.removeItem(storageKey + '_mensagem');
                            
                            // Enviar formulário
                            this.submit();
                        }
                    });
                });
            }
            
            // Função para validar e-mail
            function isValidEmail(email) {
                const re = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
                return re.test(email);
            }
            
            // Auto-salvar assunto no localStorage
            const assuntoInput = document.getElementById('assunto');
            if (assuntoInput) {
                const savedAssunto = localStorage.getItem(storageKey + '_assunto');
                if (savedAssunto) {
                    assuntoInput.value = savedAssunto;
                }
                
                assuntoInput.addEventListener('input', function() {
                    localStorage.setItem(storageKey + '_assunto', this.value);
                });
            }
        });
    </script>
    
    <?php include 'sino_notificacoes.php'; ?>
</body>
</html>