<?php
// include/email_anuncio_gratuito_utils.php

// Os arquivos PHPMailer (Exception.php, PHPMailer.php, SMTP.php)
// são incluídos pelo script principal (processar_criar_anuncio_gratuito.php)
// antes deste arquivo ser incluído. Portanto, apenas as declarações 'use' são necessárias aqui.

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

/**
 * Configura e retorna uma nova instância do PHPMailer para e-mails de anúncio gratuito.
 */
function configurarMailerParaAnuncioGratuito() {
    $mail = new PHPMailer(true);
    try {
        // Configurações do Servidor SMTP (lidas do $_ENV no script principal)
        $mail->isSMTP();
        $mail->Host       = $_ENV['SMTP_HOST'] ?? 'configurar_no_env.com'; // Ex: 'smtp.example.com'
        $mail->SMTPAuth   = filter_var(($_ENV['SMTP_AUTH'] ?? true), FILTER_VALIDATE_BOOLEAN);
        $mail->Username   = $_ENV['SMTP_USERNAME'] ?? 'usuario@configurar_no_env.com';
        $mail->Password   = $_ENV['SMTP_PASSWORD'] ?? 'senha_no_env';

        $smtp_secure_env = strtolower($_ENV['SMTP_SECURE'] ?? 'ssl'); // ou 'tls'
        $mail->SMTPSecure = ($smtp_secure_env === 'tls') ? PHPMailer::ENCRYPTION_STARTTLS : PHPMailer::ENCRYPTION_SMTPS;
        $mail->Port       = (int)($_ENV['SMTP_PORT'] ?? 465); // 465 para SSL, 587 para TLS

        $mail->CharSet = 'UTF-8';
        $mail->setFrom(
            $_ENV['SMTP_FROM_EMAIL'] ?? 'nao-responda@configurar_no_env.com',
            htmlspecialchars($_ENV['SMTP_FROM_NAME'] ?? 'Nome do Seu Site')
        );

        // Para depuração do PHPMailer (descomente se necessário):
        // $mail->SMTPDebug = \PHPMailer\PHPMailer\SMTP::DEBUG_SERVER;
        // error_log("Mailer Gratuito Config: Host={$mail->Host}, Port={$mail->Port}, User={$mail->Username}, Auth=" .($mail->SMTPAuth ? 'true':'false').", Secure={$mail->SMTPSecure}");

        return $mail;
    } catch (PHPMailerException $e) {
        error_log("Erro Crítico ao configurar PHPMailer para Anúncio Gratuito (em utils): " . $e->getMessage());
        return null;
    }
}

/**
 * Envia e-mail de confirmação para a empresa sobre o anúncio gratuito criado.
 */
function enviarEmailConfirmacaoAnuncioGratuitoEmpresa($email_destinatario, $nome_empresa, $titulo_vaga, $link_vaga, $email_contato_vaga) {
    $mail = configurarMailerParaAnuncioGratuito();
    if (!$mail) {
        error_log("Falha ao configurar mailer (confirmação empresa - gratuito). Email não enviado para {$email_destinatario}.");
        return false;
    }

    try {
        $mail->addAddress($email_destinatario, htmlspecialchars($nome_empresa));
        $mail->isHTML(true);
        $mail->Subject = 'Seu Anúncio Gratuito foi Publicado na Selflix Vagas!'; // Adapte o nome do site
        $mail->Body    = "Olá <strong>" . htmlspecialchars($nome_empresa) . "</strong>,<br><br>" .
                         "Seu anúncio gratuito \"<strong>" . htmlspecialchars($titulo_vaga) . "</strong>\" foi criado e publicado com sucesso em nosso site!<br>" .
                         "E-mail para recebimento de currículos informado para esta vaga: " . htmlspecialchars($email_contato_vaga) . "<br>" .
                         "Você pode visualizá-lo aqui: <a href=\"" . htmlspecialchars($link_vaga) . "\">" . htmlspecialchars($link_vaga) . "</a><br><br>" .
                         "Atenciosamente,<br>Equipe " . htmlspecialchars($_ENV['SMTP_FROM_NAME'] ?? 'Selflix Vagas'); // Adapte o nome do site
        $mail->AltBody = "Olá " . htmlspecialchars($nome_empresa) . ",\n\nSeu anúncio gratuito \"" . htmlspecialchars($titulo_vaga) . "\" foi criado e publicado!\nE-mail para CVs: " . htmlspecialchars($email_contato_vaga) . "\nLink: " . htmlspecialchars($link_vaga) . "\n\nEquipe " . htmlspecialchars($_ENV['SMTP_FROM_NAME'] ?? 'Selflix Vagas'); // Adapte o nome do site

        $mail->send();
        error_log("INFO (Email Gratuito): Confirmação enviada para empresa {$email_destinatario} para vaga '{$titulo_vaga}'.");
        return true;
    } catch (PHPMailerException $e) {
        error_log("ERRO PHPMailer (Confirmação Empresa - Gratuito) para {$email_destinatario}, Vaga '{$titulo_vaga}': " . $mail->ErrorInfo . " | Exception: " . $e->getMessage());
        return false;
    }
}

/**
 * Envia e-mail de notificação para o administrador sobre novo anúncio gratuito.
 */
function enviarEmailNotificacaoNovoAnuncioGratuitoAdmin($email_admin, $nome_empresa, $titulo_vaga, $link_vaga, $email_contato_vaga, $id_empresa) {
    $mail = configurarMailerParaAnuncioGratuito();
    if (!$mail) {
        error_log("Falha ao configurar mailer (notificação admin - gratuito). Email não enviado para {$email_admin}.");
        return false;
    }

    try {
        $mail->addAddress($email_admin);
        $mail->isHTML(true);
        $mail->Subject = '[ADMIN] Novo Anúncio GRATUITO Criado: ' . htmlspecialchars($titulo_vaga);
        $mail->Body    = "Um novo anúncio GRATUITO foi criado no site:<br>" .
                         "<ul>" .
                         "<li><strong>Título da Vaga:</strong> " . htmlspecialchars($titulo_vaga) . "</li>" .
                         "<li><strong>Empresa:</strong> " . htmlspecialchars($nome_empresa) . " (ID: " . htmlspecialchars($id_empresa) . ")</li>" .
                         "<li><strong>E-mail de Contato da Vaga:</strong> " . htmlspecialchars($email_contato_vaga) . "</li>" .
                         "<li><strong>Link para o Anúncio:</strong> <a href=\"" . htmlspecialchars($link_vaga) . "\">Visualizar Anúncio</a></li>" .
                         "</ul>";
        $mail->AltBody = "Novo anúncio GRATUITO criado:\nTítulo: " . htmlspecialchars($titulo_vaga) . "\nEmpresa: " . htmlspecialchars($nome_empresa) . " (ID: " . htmlspecialchars($id_empresa) . ")\nE-mail Contato: " . htmlspecialchars($email_contato_vaga) . "\nLink: " . htmlspecialchars($link_vaga);

        $mail->send();
        error_log("INFO (Email Gratuito): Notificação enviada para admin {$email_admin} para vaga '{$titulo_vaga}'.");
        return true;
    } catch (PHPMailerException $e) {
        error_log("ERRO PHPMailer (Notificação Admin - Gratuito) para {$email_admin}, Vaga '{$titulo_vaga}': " . $mail->ErrorInfo . " | Exception: " . $e->getMessage());
        return false;
    }
}
?>