<?php
// include/emails-notificacao/logou.php

if (!defined('BASE_PATH')) {
    define('BASE_PATH', realpath(__DIR__ . '/../../')); 
}

require_once BASE_PATH . '/PHPMailer-master/src/Exception.php';
require_once BASE_PATH . '/PHPMailer-master/src/PHPMailer.php';
require_once BASE_PATH . '/PHPMailer-master/src/SMTP.php';
require_once BASE_PATH . '/env.php';

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception as PHPMailerException;
use PHPMailer\PHPMailer\SMTP;

function configurarMailerLogAcesso() {
    $mail = new PHPMailer(true);
    try {
        $mail->isSMTP();
        $mail->Host       = $_ENV['SMTP_HOST'] ?? '';
        $mail->SMTPAuth   = filter_var(($_ENV['SMTP_AUTH'] ?? true), FILTER_VALIDATE_BOOLEAN);
        $mail->Username   = $_ENV['SMTP_USERNAME'] ?? '';
        $mail->Password   = $_ENV['SMTP_PASSWORD'] ?? '';
        $smtp_secure_env  = strtolower($_ENV['SMTP_SECURE'] ?? 'ssl');
        $mail->SMTPSecure = ($smtp_secure_env === 'tls') ? PHPMailer::ENCRYPTION_STARTTLS : PHPMailer::ENCRYPTION_SMTPS;
        $mail->Port       = (int)($_ENV['SMTP_PORT'] ?? 465);
        $mail->CharSet    = 'UTF-8';
        $fromName         = "Sistema Selflix - Logs";
        $mail->setFrom($_ENV['SMTP_FROM_EMAIL'] ?? '', $fromName);
        $mail->SMTPDebug  = SMTP::DEBUG_OFF; 
        return $mail;
    } catch (PHPMailerException $e) {
        return null;
    }
}

/**
 * Função para buscar o template no banco de dados e substituir as tags
 */
function processarTemplateLogou($pdo, $slug, $dados) {
    $stmt = $pdo->prepare("SELECT assunto, corpo FROM EmailTemplates WHERE slug = :slug");
    $stmt->execute([':slug' => $slug]);
    $template = $stmt->fetch(PDO::FETCH_ASSOC);

    if (!$template) return null;

    $assunto = $template['assunto'];
    $corpo = $template['corpo'];

    foreach ($dados as $chave => $valor) {
        $placeholder = "{{" . $chave . "}}";
        $assunto = str_replace($placeholder, $valor, $assunto);
        $corpo = str_replace($placeholder, $valor, $corpo);
    }
    return ['assunto' => $assunto, 'corpo' => $corpo];
}

/**
 * Dispara e-mail para o administrador informando o login da empresa
 */
function enviarNotificacaoLoginEmpresa($dados_empresa) {
    global $pdo;
    $mail = configurarMailerLogAcesso();
    if (!$mail) return false;

    // Adiciona data e hora automaticamente aos dados para que a tag {{data_hora}} funcione
    $dados_empresa['data_hora'] = date('d/m/Y H:i:s');

    // 1. Busca o modelo salvo no Banco de Dados
    $conteudo = processarTemplateLogou($pdo, 'notificacao_login_empresa', $dados_empresa);

    // 2. Se por acaso o banco de dados falhar ou não achar o template, usa um texto de segurança
    if (!$conteudo) {
        $conteudo = [
            'assunto' => "Alerta de Acesso: " . $dados_empresa['nome_empresa'],
            'corpo' => "<p>A empresa <strong>{$dados_empresa['nome_empresa']}</strong> (E-mail: {$dados_empresa['email']}) efetuou login em {$dados_empresa['data_hora']}.</p>"
        ];
    }

    try {
        $mail->addAddress('atendimento@selflix.com.br');
        $mail->isHTML(true);
        
        // Pega o Assunto e Corpo dinâmicos processados
        $mail->Subject = $conteudo['assunto'];
        $mail->Body    = $conteudo['corpo'];
        $mail->AltBody = strip_tags($conteudo['corpo']);

        return $mail->send();
    } catch (Exception $e) {
        error_log("Erro ao enviar e-mail de log de acesso: " . $e->getMessage());
        return false; 
    }
}