<?php
session_start();

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

require_once 'conexao.php';

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

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

// Função para salvar configurações de e-mail
function salvarConfiguracoesEmail($conn, $tenantId, $usuarioId, $configuracoes) {
    try {
        // Verificar se já existe configuração para este tenant E usuário
        $stmt = $conn->prepare("SELECT id FROM configuracoes_email WHERE tenant_id = ? AND usuario_id = ?");
        $stmt->bind_param("ii", $tenantId, $usuarioId);
        $stmt->execute();
        $result = $stmt->get_result();
        
        if ($result->num_rows > 0) {
            // Atualizar configuração existente
            $sql = "UPDATE configuracoes_email SET 
                    servidor_smtp = ?, porta_smtp = ?, usuario_smtp = ?, 
                    senha_smtp = ?, criptografia = ?, email_remetente = ?, 
                    nome_remetente = ?, atualizado_em = NOW() 
                    WHERE tenant_id = ? AND usuario_id = ?";
        } else {
            // Inserir nova configuração
            $sql = "INSERT INTO configuracoes_email 
                    (servidor_smtp, porta_smtp, usuario_smtp, senha_smtp, 
                     criptografia, email_remetente, nome_remetente, tenant_id, usuario_id, criado_em) 
                    VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())";
        }
        
        $stmt = $conn->prepare($sql);
        
        if ($result->num_rows > 0) {
            $stmt->bind_param("sisssssii", 
                $configuracoes['servidor_smtp'],
                $configuracoes['porta_smtp'],
                $configuracoes['usuario_smtp'],
                $configuracoes['senha_smtp'],
                $configuracoes['criptografia'],
                $configuracoes['email_remetente'],
                $configuracoes['nome_remetente'],
                $tenantId,
                $usuarioId
            );
        } else {
            $stmt->bind_param("sisssssii", 
                $configuracoes['servidor_smtp'],
                $configuracoes['porta_smtp'],
                $configuracoes['usuario_smtp'],
                $configuracoes['senha_smtp'],
                $configuracoes['criptografia'],
                $configuracoes['email_remetente'],
                $configuracoes['nome_remetente'],
                $tenantId,
                $usuarioId
            );
        }
        
        $resultado = $stmt->execute();
        $stmt->close();
        
        if ($resultado) {
            registrarLog('Configurações de e-mail salvas', "Servidor: {$configuracoes['servidor_smtp']} - Usuário: $usuarioId");
            return ['sucesso' => true, 'mensagem' => 'Configurações salvas com sucesso!'];
        } else {
            return ['sucesso' => false, 'mensagem' => 'Erro ao salvar configurações'];
        }
        
    } catch (Exception $e) {
        registrarLog('Erro ao salvar configurações de e-mail', $e->getMessage());
        return ['sucesso' => false, 'mensagem' => 'Erro: ' . $e->getMessage()];
    }
}

// Função para carregar configurações de e-mail
function carregarConfiguracoesEmail($conn, $tenantId, $usuarioId) {
    try {
        $stmt = $conn->prepare("SELECT * FROM configuracoes_email WHERE tenant_id = ? AND usuario_id = ?");
        $stmt->bind_param("ii", $tenantId, $usuarioId);
        $stmt->execute();
        $result = $stmt->get_result();
        
        if ($result->num_rows > 0) {
            $configuracoes = $result->fetch_assoc();
            $stmt->close();
            return $configuracoes;
        } else {
            $stmt->close();
            return null;
        }
        
    } catch (Exception $e) {
        registrarLog('Erro ao carregar configurações de e-mail', $e->getMessage());
        return null;
    }
}

// Processar formulário de configurações
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['acao'])) {
    $tenantId = (int) $_SESSION['tenant_id'];
    $usuarioId = (int) $_SESSION['usuario_id'];
    
    if ($_POST['acao'] === 'salvar_configuracoes') {
        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: gerenciamento_email.php");
            exit();
        }
        
        $configuracoes = [
            'servidor_smtp' => trim($_POST['servidor_smtp'] ?? ''),
            'porta_smtp' => (int) ($_POST['porta_smtp'] ?? 587),
            'usuario_smtp' => trim($_POST['usuario_smtp'] ?? ''),
            'senha_smtp' => trim($_POST['senha_smtp'] ?? ''),
            'criptografia' => trim($_POST['criptografia'] ?? 'tls'),
            'email_remetente' => trim($_POST['email_remetente'] ?? ''),
            'nome_remetente' => trim($_POST['nome_remetente'] ?? '')
        ];
        
        // Validações básicas
        if (empty($configuracoes['servidor_smtp'])) {
            $_SESSION['mensagem'] = "Servidor SMTP é obrigatório";
            $_SESSION['mensagem_tipo'] = 'erro';
            header("Location: gerenciamento_email.php");
            exit();
        }
        
        if (empty($configuracoes['email_remetente']) || !filter_var($configuracoes['email_remetente'], FILTER_VALIDATE_EMAIL)) {
            $_SESSION['mensagem'] = "E-mail do remetente é obrigatório e deve ser válido";
            $_SESSION['mensagem_tipo'] = 'erro';
            header("Location: gerenciar_emails.php");
            exit();
        }
        
        $resultado = salvarConfiguracoesEmail($conn, $tenantId, $usuarioId, $configuracoes);
        
        if ($resultado['sucesso']) {
            $_SESSION['mensagem'] = $resultado['mensagem'];
            $_SESSION['mensagem_tipo'] = 'sucesso';
        } else {
            $_SESSION['mensagem'] = $resultado['mensagem'];
            $_SESSION['mensagem_tipo'] = 'erro';
        }
        
        header("Location: gerenciamento_email.php");
        exit();
    }
}

// Carregar configurações existentes - agora por usuário
$configuracoes = carregarConfiguracoesEmail($conn, $_SESSION['tenant_id'], $_SESSION['usuario_id']);

if (empty($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
?>
<!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 - Minhas Configurações SMTP</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>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 0;
            padding: 0;
            background-color: #f5f5f5;
            overflow-x: hidden;
        }
        
        .header-fixed {
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            background-color: #f5f5f5;
            padding: 15px 20px;
            z-index: 1000;
            box-shadow: 0 2px 5px rgba(0,0,0,0.1);
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        
        .header-fixed img {
            height: 40px;
            margin-right: 15px;
        }
        
        .header-fixed h2 {
            margin: 0;
            flex-grow: 1;
            text-align: center;
        }
        
        .sidebar {
            position: fixed;
            left: 0;
            top: 70px;
            height: calc(100vh - 70px);
            width: 60px;
            background: white;
            box-shadow: 2px 0 5px rgba(0,0,0,0.1);
            z-index: 999;
            transition: width 0.3s ease;
            overflow-x: hidden;
        }
        
        .sidebar:hover {
            width: 250px;
        }
        
        .sidebar ul {
            list-style: none;
            padding: 0;
            margin: 0;
        }
        
        .sidebar li {
            padding: 0;
            margin: 0;
        }
        
        .sidebar a {
            display: flex;
            align-items: center;
            padding: 15px 20px;
            text-decoration: none;
            color: #333;
            white-space: nowrap;
        }
        
        .sidebar a:hover {
            background-color: #f0f0f0;
        }
        
        .sidebar i {
            margin-right: 15px;
            min-width: 20px;
            text-align: center;
        }
        
        .sidebar span {
            display: none;
        }
        
        .sidebar:hover span {
            display: inline;
        }
        
        .main-content {
            margin-left: 60px;
            padding: 30px;
            transition: margin-left 0.3s ease;
            position: relative;
            z-index: 1;
            background-color: #f5f5f5;
            min-height: calc(10vh - 1px);
        }
        
        .form-container {
            background: white;
            padding: 30px;
            border-radius: 8px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
            max-width: 800px;
            margin: 0 auto;
        }
        
        .form-row {
            display: flex;
            flex-wrap: wrap;
            gap: 20px;
            margin-bottom: 20px;
        }
        
        .form-group {
            flex: 1;
            min-width: 250px;
        }
        
        .form-group label {
            display: block;
            margin-bottom: 8px;
            font-weight: bold;
            color: #333;
        }
        
        .form-group input, .form-group select {
            width: 100%;
            padding: 12px;
            border: 1px solid #ddd;
            border-radius: 6px;
            box-sizing: border-box;
            font-size: 14px;
            transition: border-color 0.3s;
        }
        
        .form-group input:focus, .form-group select:focus {
            border-color: #007bff;
            outline: none;
            box-shadow: 0 0 0 2px rgba(0,123,255,0.25);
        }
        
        .btn {
            padding: 12px 24px;
            border: none;
            border-radius: 6px;
            cursor: pointer;
            font-weight: bold;
            margin-right: 10px;
            transition: all 0.3s;
        }
        
        .btn-primary {
            background-color: #007bff;
            color: white;
        }
        
        .btn-primary:hover {
            background-color: #0056b3;
        }
        
        .btn-secondary {
            background-color: #6c757d;
            color: white;
        }
        
        .btn-secondary:hover {
            background-color: #545b62;
        }
        
        .form-actions {
            margin-top: 30px;
            text-align: center;
        }
        
        .required::after {
            content: " *";
            color: red;
        }
        
        .config-section {
            margin-bottom: 30px;
            padding: 25px;
            background: #f8f9fa;
            border-radius: 8px;
            border: 1px solid #dee2e6;
        }
        
        .config-section h3 {
            margin-top: 0;
            color: #495057;
            border-bottom: 2px solid #dee2e6;
            padding-bottom: 10px;
            display: flex;
            align-items: center;
            gap: 10px;
        }
        
        .info-box {
            background: #e7f3ff;
            border-left: 4px solid #007bff;
            padding: 20px;
            margin-bottom: 25px;
            border-radius: 6px;
        }
        
        .info-box h4 {
            margin-top: 0;
            color: #0056b3;
            display: flex;
            align-items: center;
            gap: 8px;
        }
        
        .alert {
            padding: 15px;
            margin-bottom: 25px;
            border: 1px solid transparent;
            border-radius: 6px;
        }
        
        .alert-success {
            color: #155724;
            background-color: #d4edda;
            border-color: #c3e6cb;
        }
        
        .alert-error {
            color: #721c24;
            background-color: #f8d7da;
            border-color: #f5c6cb;
        }
        
        .exemplos-smtp {
            background: #fff3cd;
            border-left: 4px solid #ffc107;
            padding: 20px;
            margin-top: 25px;
            border-radius: 6px;
        }
        
        .exemplos-smtp h4 {
            margin-top: 0;
            color: #856404;
            display: flex;
            align-items: center;
            gap: 8px;
        }
        
        .exemplos-lista {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
            gap: 15px;
            margin-top: 15px;
        }
        
        .exemplo-item {
            background: white;
            padding: 15px;
            border-radius: 6px;
            border: 1px solid #ffeaa7;
        }
        
        .exemplo-servidor {
            font-weight: bold;
            color: #333;
        }
        
        .exemplo-detalhes {
            font-size: 0.9em;
            color: #666;
            margin-top: 5px;
        }
        
        @media (max-width: 768px) {
            .form-group {
                min-width: 100%;
            }
            
            .sidebar {
                width: 0;
            }
            
            .sidebar:hover {
                width: 200px;
            }
            
            .main-content {
                margin-left: 0;
                padding: 80px 15px 15px 15px;
            }
            
            .exemplos-lista {
                grid-template-columns: 1fr;
            }
        }
    </style>
</head>
<body>

  <?php include 'menu_lateral.php'; ?>
    
  <div class="main-content">
    <div class="form-container">
      <h2 style="text-align: center; margin-bottom: 25px; color: #333;">
        <i class="fas fa-cog"></i> Minhas Configurações de E-mail
      </h2>
      
      <!-- Exibir mensagem de sucesso/erro -->
      <?php if (isset($_SESSION['mensagem'])): ?>
        <div class="alert <?php echo ($_SESSION['mensagem_tipo'] ?? '') === 'sucesso' ? 'alert-success' : 'alert-error'; ?>" id="mensagem-alert">
          <strong><?php echo ($_SESSION['mensagem_tipo'] ?? '') === 'sucesso' ? 'Sucesso!' : 'Erro!'; ?></strong>
          <?php echo htmlspecialchars($_SESSION['mensagem']); ?>
          <button type="button" style="float: right; background: none; border: none; font-size: 16px; cursor: pointer;" onclick="document.getElementById('mensagem-alert').style.display='none'">×</button>
        </div>
        
        <script>
          setTimeout(function() {
            var alertDiv = document.getElementById('mensagem-alert');
            if (alertDiv) {
              alertDiv.style.display = 'none';
            }
          }, 5000);
        </script>
        
        <?php 
        unset($_SESSION['mensagem']);
        unset($_SESSION['mensagem_tipo']);
        ?>
      <?php endif; ?>
      
      <div class="info-box">
        <h4><i class="fas fa-info-circle"></i> Configurações Pessoais</h4>
        <p>Estas configurações de e-mail são pessoais e só serão usadas por você. Cada usuário pode ter suas próprias configurações SMTP independentes.</p>
      </div>
      
      <form method="POST" action="" id="formConfigEmail">
        <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
        <input type="hidden" name="acao" value="salvar_configuracoes">
        
        <div class="config-section">
          <h3><i class="fas fa-server"></i> Configurações do Servidor</h3>
          
          <div class="form-row">
            <div class="form-group">
              <label for="servidor_smtp" class="required">Servidor SMTP</label>
              <input type="text" id="servidor_smtp" name="servidor_smtp" 
                     value="<?php echo htmlspecialchars($configuracoes['servidor_smtp'] ?? 'mail.tvitecnologia.com.br'); ?>" 
                     placeholder="ex: smtp.gmail.com" required>
            </div>
            <div class="form-group">
              <label for="porta_smtp" class="required">Porta SMTP</label>
              <input type="number" id="porta_smtp" name="porta_smtp" 
                     value="<?php echo htmlspecialchars($configuracoes['porta_smtp'] ?? '465'); ?>" 
                     min="1" max="65535" required>
            </div>
          </div>
          
          <div class="form-row">
            <div class="form-group">
              <label for="criptografia" class="required">Criptografia</label>
              <select id="criptografia" name="criptografia" required>
                <option value="ssl" <?php echo ($configuracoes['criptografia'] ?? 'ssl') === 'ssl' ? 'selected' : ''; ?>>SSL</option>
                <option value="tls" <?php echo ($configuracoes['criptografia'] ?? '') === 'tls' ? 'selected' : ''; ?>>TLS</option>
                <option value="none" <?php echo ($configuracoes['criptografia'] ?? '') === 'none' ? 'selected' : ''; ?>>Nenhuma</option>
              </select>
            </div>
          </div>
        </div>
        
        <div class="config-section">
          <h3><i class="fas fa-user"></i> Credenciais de Acesso</h3>
          
          <div class="form-row">
            <div class="form-group">
              <label for="usuario_smtp" class="required">Usuário SMTP</label>
              <input type="text" id="usuario_smtp" name="usuario_smtp" 
                     value="<?php echo htmlspecialchars($configuracoes['usuario_smtp'] ?? 'tvi@tvitecnologia.com.br'); ?>" 
                     placeholder="Seu e-mail completo" required>
            </div>
            <div class="form-group">
              <label for="senha_smtp" class="required">Senha SMTP</label>
              <input type="password" id="senha_smtp" name="senha_smtp" 
                     value="<?php echo htmlspecialchars($configuracoes['senha_smtp'] ?? ''); ?>" 
                     placeholder="Sua senha de aplicativo" required>
              <small style="color: #666; font-size: 0.8em;">
                Para Gmail, use uma senha de aplicativo se a autenticação de dois fatores estiver ativada.
              </small>
            </div>
          </div>
        </div>
        
        <div class="config-section">
          <h3><i class="fas fa-envelope"></i> Remetente</h3>
          
          <div class="form-row">
            <div class="form-group">
              <label for="email_remetente" class="required">E-mail do Remetente</label>
              <input type="email" id="email_remetente" name="email_remetente" 
                     value="<?php echo htmlspecialchars($configuracoes['email_remetente'] ?? 'tvi@tvitecnologia.com.br'); ?>" 
                     placeholder="ex: contato@empresa.com" required>
            </div>
            <div class="form-group">
              <label for="nome_remetente" class="required">Nome do Remetente</label>
              <input type="text" id="nome_remetente" name="nome_remetente" 
                     value="<?php echo htmlspecialchars($configuracoes['nome_remetente'] ?? 'Sistema SON'); ?>" 
                     placeholder="ex: Sistema SON" required>
            </div>
          </div>
        </div>
        
        <div class="exemplos-smtp">
          <h4><i class="fas fa-lightbulb"></i> Exemplos de Configuração</h4>
          <div class="exemplos-lista">
            <div class="exemplo-item">
              <div class="exemplo-servidor">Gmail</div>
              <div class="exemplo-detalhes">Servidor: smtp.gmail.com<br>Porta: 587<br>Criptografia: TLS</div>
            </div>
            <div class="exemplo-item">
              <div class="exemplo-servidor">Outlook/Hotmail</div>
              <div class="exemplo-detalhes">Servidor: smtp-mail.outlook.com<br>Porta: 587<br>Criptografia: TLS</div>
            </div>
            <div class="exemplo-item">
              <div class="exemplo-servidor">Yahoo</div>
              <div class="exemplo-detalhes">Servidor: smtp.mail.yahoo.com<br>Porta: 465<br>Criptografia: SSL</div>
            </div>
            <div class="exemplo-item">
              <div class="exemplo-servidor">TVI Tecnologia</div>
              <div class="exemplo-detalhes">Servidor: mail.tvitecnologia.com.br<br>Porta: 465<br>Criptografia: SSL</div>
            </div>
          </div>
        </div>
        
        <div class="form-actions">
          <button type="submit" class="btn btn-primary">
            <i class="fas fa-save"></i> Salvar Minhas Configurações
          </button>
          <a href="enviar_email.php" class="btn btn-secondary">
            <i class="fas fa-arrow-left"></i> Voltar para Enviar E-mail
          </a>
          <a href="dashboard.php" class="btn btn-secondary">
            <i class="fas fa-home"></i> Dashboard
          </a>
        </div>
      </form>
    </div>
  </div>

  <script>
    document.addEventListener('DOMContentLoaded', function() {
      // Validação do formulário
      document.getElementById('formConfigEmail').addEventListener('submit', function(e) {
        let isValid = true;
        const mensagens = [];
        
        // Validar servidor SMTP
        const servidor = document.getElementById('servidor_smtp').value.trim();
        if (!servidor) {
          mensagens.push('Por favor, preencha o servidor SMTP.');
          isValid = false;
        }
        
        // Validar porta
        const porta = document.getElementById('porta_smtp').value;
        if (!porta || porta < 1 || porta > 65535) {
          mensagens.push('Por favor, informe uma porta válida (1-65535).');
          isValid = false;
        }
        
        // Validar usuário
        const usuario = document.getElementById('usuario_smtp').value.trim();
        if (!usuario) {
          mensagens.push('Por favor, preencha o usuário SMTP.');
          isValid = false;
        }
        
        // Validar senha
        const senha = document.getElementById('senha_smtp').value;
        if (!senha) {
          mensagens.push('Por favor, preencha a senha SMTP.');
          isValid = false;
        }
        
        // Validar e-mail do remetente
        const emailRemetente = document.getElementById('email_remetente').value.trim();
        if (!emailRemetente) {
          mensagens.push('Por favor, preencha o e-mail do remetente.');
          isValid = false;
        } else if (!isValidEmail(emailRemetente)) {
          mensagens.push('Por favor, informe um e-mail válido para o remetente.');
          isValid = false;
        }
        
        // Validar nome do remetente
        const nomeRemetente = document.getElementById('nome_remetente').value.trim();
        if (!nomeRemetente) {
          mensagens.push('Por favor, preencha o nome do remetente.');
          isValid = false;
        }
        
        if (!isValid) {
          e.preventDefault();
          Swal.fire({
            icon: 'error',
            title: 'Erro de Validação',
            html: mensagens.join('<br>')
          });
        }
      });
      
      // Função para validar e-mail
      function isValidEmail(email) {
        const re = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
        return re.test(email);
      }
      
      // Sugestões automáticas baseadas no servidor
      document.getElementById('servidor_smtp').addEventListener('change', function() {
        const servidor = this.value.toLowerCase();
        
        // Configurações padrão para provedores conhecidos
        const provedores = {
          'gmail.com': { porta: 587, criptografia: 'tls' },
          'smtp.gmail.com': { porta: 587, criptografia: 'tls' },
          'outlook.com': { porta: 587, criptografia: 'tls' },
          'smtp-mail.outlook.com': { porta: 587, criptografia: 'tls' },
          'hotmail.com': { porta: 587, criptografia: 'tls' },
          'yahoo.com': { porta: 465, criptografia: 'ssl' },
          'smtp.mail.yahoo.com': { porta: 465, criptografia: 'ssl' },
          'tvitecnologia.com.br': { porta: 465, criptografia: 'ssl' },
          'mail.tvitecnologia.com.br': { porta: 465, criptografia: 'ssl' }
        };
        
        for (const [provedor, config] of Object.entries(provedores)) {
          if (servidor.includes(provedor)) {
            document.getElementById('porta_smtp').value = config.porta;
            document.getElementById('criptografia').value = config.criptografia;
            break;
          }
        }
      });
    });
  </script>
</body>
</html>