<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php'; // Ajuste o caminho conforme necessário

$mail = new PHPMailer(true); // Instância do PHPMailer

try {
    // Consulta para obter os dados de email
    $sql = "SELECT servidor, exibicao, email, usuario, senha, Host, Port FROM email_adicionar WHERE CadUser = :CadUser AND bloqueado = 'N'";
    $stmt = $painel_geral->prepare($sql);
    $stmt->bindParam(':CadUser', $cadUser, PDO::PARAM_STR);
    $stmt->execute();

    // Verificando se algum dado foi retornado
    if ($stmt->rowCount() > 0) {
        $result = $stmt->fetch(PDO::FETCH_ASSOC);

        // Atribuindo os dados de email
        $dados_email = [
            'servidor' => $result['servidor'],
            'exibicao' => $result['exibicao'],
            'email' => $result['email'],
            'usuario' => $result['usuario'],
            'senha' => $result['senha'],
            'host' => $result['Host'],
            'port' => $result['Port']
        ];

        // Depuração: Exibindo os dados obtidos do banco
      

    } else {
        // Caso o usuário não seja encontrado no banco
        return null;  // Retorna null caso o usuário não seja encontrado
    }

    // Consulta para verificar a preferência de renovação
    $query_sms = "SELECT DadosDeAcessoTeste FROM email_preferencias WHERE CadUser = :CadUser";
    $stmt_sms = $painel_geral->prepare($query_sms);
    $stmt_sms->bindParam(':CadUser', $cadUser, PDO::PARAM_STR);
    $stmt_sms->execute();
    $email_preferencia1 = $stmt_sms->fetch(PDO::FETCH_ASSOC);

    // Verificando se o valor de DadosDeAcessoTeste é válido
    if (!$email_preferencia1 || !isset($email_preferencia1['DadosDeAcessoTeste']) || $email_preferencia1['DadosDeAcessoTeste'] <= 0) {
        return; // Retorna caso o valor de DadosDeAcessoTeste seja inválido
    }

    // Consulta para obter o modelo de mensagem
    $sql_mensagem = "SELECT assunto, mensagem FROM email_modelo WHERE id = :id";
    $stmt_mensagem = $painel_geral->prepare($sql_mensagem);
    $stmt_mensagem->bindParam(':id', $email_preferencia1['DadosDeAcessoTeste'], PDO::PARAM_STR);
    $stmt_mensagem->execute();

    // Verificando se a mensagem foi encontrada
    if ($stmt_mensagem->rowCount() > 0) {
        $result_mensagem = $stmt_mensagem->fetch(PDO::FETCH_ASSOC);

        // Atribuindo a mensagem do banco à variável
        $mensagem = $result_mensagem['mensagem'];

        // Substituindo os placeholders na mensagem com os dados apropriados
        $mensagem = str_replace(
            ['[NMCLIENTE]', '[URLPERFIL]', '[PORTAPERFIL]', '[LGCLIENTE]', '[SNCLIENTE]', '[NOMEPERFIL]', '[VCCLIENTE]'],
            [$nome, $url, $porta, $usuario, $senha, $nomeprofile, date("d/m/Y H:i:s", $data_premio)],
            $mensagem
        );

    } else {
        return null;  // Retorna null caso a mensagem não seja encontrada
    }

    // Configurações do servidor SMTP
    $mail->isSMTP();
    $mail->Host = $result['Host'];

    $mail->SMTPAuth = true;
    $mail->Username = $result['usuario']; // Usando os dados do banco
    $mail->Password = $result['senha']; // Usando os dados do banco
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->Port = $result['Port'];

    // Remetente e destinatário
    $mail->setFrom($result['usuario'], $result['exibicao']); // Usando os dados do banco
    $mail->addAddress($email, $nome); // Adiciona o destinatário a partir do formulário

    // Definindo o corpo da mensagem do e-mail
    $mail->isHTML(true);
    $mail->Subject = $result_mensagem['assunto'];
    $mail->Body = $mensagem;

    // Envia o email
    $mail->send();
} catch (Exception $e) {
    // Opcional: exibir mensagem de erro se o email não for enviado
    echo "Erro ao enviar o email: {$mail->ErrorInfo}";
}
?>