<?php
// include/email_cadastro_candidato.php

// Incluindo PHPMailer
require_once __DIR__ . '/../PHPMailer-master/src/Exception.php';
require_once __DIR__ . '/../PHPMailer-master/src/PHPMailer.php';
require_once __DIR__ . '/../PHPMailer-master/src/SMTP.php';

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

// Inclui o arquivo 'env.php' para ter acesso à função 'carregarEnv'.
// Assume que 'env.php' está na raiz do projeto, um nível acima da pasta 'include'.
require_once __DIR__ . '/../env.php';

// Carrega as variáveis do ambiente do .env para a superglobal $_ENV.
try {
    carregarEnv(__DIR__ . '/../.env');
} catch (Exception $e) {
    error_log("Erro crítico ao carregar o arquivo .env em include/email_cadastro_candidato.php: " . $e->getMessage());
}

/**
 * Configura uma instância do PHPMailer com as configurações do .env.
 * @return PHPMailer|null Retorna a instância do PHPMailer ou null em caso de erro.
 */
function configurarMailerParaCandidato() {
    $mail = new PHPMailer(true); // Habilita exceções

    try {
        // Mude para SMTP::DEBUG_SERVER para debug em desenvolvimento, SMTP::DEBUG_OFF para produção.
        $mail->SMTPDebug = SMTP::DEBUG_OFF; // Desativado para evitar problemas de "headers already sent"
        $mail->isSMTP();
        $mail->Host       = $_ENV['SMTP_HOST'] ?? 'mail.seudominio.com';
        $mail->SMTPAuth   = ($_ENV['SMTP_AUTH'] ?? 'true') === 'true';
        $mail->Username   = $_ENV['SMTP_USERNAME'] ?? 'user@seudominio.com';
        $mail->Password   = $_ENV['SMTP_PASSWORD'] ?? 'sua_senha';
        
        $smtp_secure = strtolower($_ENV['SMTP_SECURE'] ?? 'ssl');
        if ($smtp_secure === 'tls') {
            $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
        } else { // Assume 'ssl' ou SMTPS
            $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
        }
        $mail->Port       = (int)($_ENV['SMTP_PORT'] ?? 465);

        $mail->CharSet    = 'UTF-8';
        
        // Remetente padrão para e-mails da Selflix Vagas
        $mail->setFrom(
            $_ENV['SMTP_FROM_EMAIL'] ?? 'noreply@seudominio.com',
            htmlspecialchars($_ENV['SMTP_FROM_NAME'] ?? 'Selflix Vagas')
        );

        // Opcional: Desabilita a verificação de certificado (USE COM CAUTELA E APENAS EM TESTES!)
        // Descomente APENAS se o problema persistir APÓS as outras mudanças e a análise do log.
        /*
        $mail->SMTPOptions = array(
            'ssl' => array(
                'verify_peer' => false,
                'verify_peer_name' => false,
                'allow_self_signed' => true
            )
        );
        */

        return $mail;

    } catch (PHPMailerException $e) {
        error_log("ERRO PHPMailer ao configurar (include/email_cadastro_candidato.php): " . $e->getMessage());
        return null; // Retorna null para indicar falha na configuração
    }
}

/**
 * Envia e-mail de confirmação de cadastro para o candidato.
 */
function enviarEmailConfirmacaoCandidato($email_candidato, $nome_candidato, $login_candidato, $site_url) {
    $mail = configurarMailerParaCandidato();
    if (!$mail) {
        error_log("PHPMailer não pôde ser configurado para enviar e-mail ao candidato.");
        return false;
    }

    try {
        $mail->addAddress($email_candidato, htmlspecialchars($nome_candidato));
        $mail->isHTML(true);
        $mail->Subject = "Bem-vindo(a) à Selflix Vagas, " . htmlspecialchars($nome_candidato) . "!";
        
        // Corpos do e-mail com sintaxe melhorada para multi-linhas
        $corpoHtml = '
            <html>
            <head><title>Bem-vindo à Selflix Vagas!</title></head>
            <body>
                <p>Olá <strong>' . htmlspecialchars($nome_candidato) . '</strong>,</p>
                <p>Seu cadastro na Selflix Vagas foi realizado com sucesso! 🎉</p>
                <p>Agora você faz parte da nossa comunidade de talentos. Acesse nosso painel e comece a procurar por oportunidades que combinam com você:</p>
                <p><a href="' . htmlspecialchars($site_url) . '/vagas.php">Explorar Vagas</a></p>
                <p>Seu login é: <strong>' . htmlspecialchars($login_candidato) . '</strong></p>
                <p>Lembre-se de manter suas credenciais de acesso em segurança.</p>
                <p>Para se destacar ainda mais, considere criar seu V&iacute;deo Apresenta&ccedil;&atilde;o na Selflix:</p>
                <p><a href="https://videos.selflix.com.br/selflix">Saiba mais sobre o V&iacute;deo Selflix</a></p>
                <p>Sucesso em sua jornada!</p>
                <p>Atenciosamente,<br>Equipe ' . htmlspecialchars($_ENV['SMTP_FROM_NAME'] ?? 'Selflix Vagas') . '</p>
                <p><small>Este é um e-mail automático, por favor, não responda.</small></p>
            </body>
            </html>
        ';
        $mail->Body = $corpoHtml;
        $mail->AltBody = "Olá " . htmlspecialchars($nome_candidato) . ",\n\n" .
                         "Seu cadastro na Selflix Vagas foi realizado com sucesso!\n\n" .
                         "Agora você faz parte da nossa comunidade de talentos. Acesse nosso painel e comece a procurar por oportunidades que combinam com você:\n" .
                         $site_url . "/vagas.php\n\n" .
                         "Seu login é: " . htmlspecialchars($login_candidato) . "\n" .
                         "Lembre-se de manter suas credenciais de acesso em segurança.\n\n" .
                         "Para se destacar ainda mais, considere criar seu Vídeo Apresentação na Selflix:\n" .
                         "https://videos.selflix.com.br/selflix\n\n" .
                         "Sucesso em sua jornada!\n" .
                         "Equipe " . htmlspecialchars($_ENV['SMTP_FROM_NAME'] ?? 'Selflix Vagas') . "\n\n" .
                         "Este é um e-mail automático, por favor, não responda.";

        $mail->send();
        return true;
    } catch (PHPMailerException $e) {
        error_log("ERRO PHPMailer ao enviar e-mail de confirmação para candidato {$email_candidato}: {$mail->ErrorInfo} | Detalhe: {$e->getMessage()}");
        return false;
    }
}

/**
 * Envia e-mail de notificação de novo candidato para o administrador.
 */
function enviarEmailNotificacaoNovoCandidatoAdmin($email_admin, $nome_candidato, $email_candidato, $login_candidato, $celular, $cidade, $estado, $tipo_vaga_interesse, $cargo_pretendido, $salario_pretendido, $link_selflix, $curriculo_path_db, $site_url, $receber_emails_opcao) {
    $mail = configurarMailerParaCandidato();
    if (!$mail) {
        error_log("PHPMailer não pôde ser configurado para enviar e-mail ao admin.");
        return false;
    }

    try {
        $mail->addAddress($email_admin);
        $mail->isHTML(true);
        $mail->Subject = "[ADMIN] Novo Candidato Cadastrado: " . htmlspecialchars($nome_candidato);
        
        $cv_link_admin = !empty($curriculo_path_db) ?
            ($site_url . '/' . ltrim($curriculo_path_db, '/')) :
            'Não enviado';

        // Corpos do e-mail com sintaxe melhorada para multi-linhas
        $corpoHtml = '
            <html>
            <head><title>Novo Candidato Cadastrado - ' . htmlspecialchars($_ENV['SMTP_FROM_NAME'] ?? 'Selflix Vagas') . '</title></head>
            <body>
                <p>Um novo candidato se cadastrou na plataforma:</p>
                <ul>
                    <li><strong>Nome:</strong> ' . htmlspecialchars($nome_candidato) . '</li>
                    <li><strong>E-mail:</strong> ' . htmlspecialchars($email_candidato) . '</li>
                    <li><strong>Login:</strong> ' . htmlspecialchars($login_candidato) . '</li>
                    <li><strong>Celular:</strong> ' . htmlspecialchars($celular) . '</li>
                    <li><strong>Endereço:</strong> ' . htmlspecialchars($cidade) . ' / ' . htmlspecialchars($estado) . '</li>
                    <li><strong>Segmento de Interesse:</strong> ' . htmlspecialchars($tipo_vaga_interesse) . '</li>
                    <li><strong>Cargo Pretendido:</strong> ' . htmlspecialchars($cargo_pretendido) . '</li>
                    <li><strong>Pretensão Salarial:</strong> ' . htmlspecialchars($salario_pretendido) . '</li>
                    <li><strong>Link Selflix:</strong> ' . (!empty($link_selflix) ? '<a href="' . htmlspecialchars($link_selflix) . '">' . htmlspecialchars($link_selflix) . '</a>' : 'Não informado') . '</li>
                    <li><strong>Currículo:</strong> ' . ($curriculo_path_db ? '<a href="' . htmlspecialchars($cv_link_admin) . '">Ver Currículo</a>' : 'Não enviado') . '</li>
                    <li><strong>Aceita receber e-mails:</strong> ' . htmlspecialchars($receber_emails_opcao) . '</li>
                </ul>
                <p>Atenciosamente,<br>Sistema ' . htmlspecialchars($_ENV['SMTP_FROM_NAME'] ?? 'Selflix Vagas') . '</p>
                <p><small>Este é um e-mail automático, por favor, não responda.</small></p>
            </body>
            </html>
        ';
        $mail->Body = $corpoHtml;
        $mail->AltBody = "Novo candidato cadastrado:\n\n" .
                         "Nome: " . htmlspecialchars($nome_candidato) . "\n" .
                         "E-mail: " . htmlspecialchars($email_candidato) . "\n" .
                         "Login: " . htmlspecialchars($login_candidato) . "\n" .
                         "Celular: " . htmlspecialchars($celular) . "\n" .
                         "Endereço: " . htmlspecialchars($cidade) . " / " . htmlspecialchars($estado) . "\n" .
                         "Segmento de Interesse: " . htmlspecialchars($tipo_vaga_interesse) . "\n" .
                         "Cargo Pretendido: " . htmlspecialchars($cargo_pretendido) . "\n" .
                         "Pretensão Salarial: " . htmlspecialchars($salario_pretendido) . "\n" .
                         "Link Selflix: " . (!empty($link_selflix) ? htmlspecialchars($link_selflix) : "Não informado") . "\n" .
                         "Currículo: " . ($curriculo_path_db ? htmlspecialchars($cv_link_admin) : "Não enviado") . "\n" .
                         "Aceita receber e-mails: " . htmlspecialchars($receber_emails_opcao);

        $mail->send();
        return true;
    } catch (PHPMailerException $e) {
        error_log("ERRO PHPMailer ao enviar notificação de novo candidato para admin {$email_admin}: {$mail->ErrorInfo} | Detalhe: {$e->getMessage()}");
        return false;
    }
}
?>