You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
educoder/app/jobs/generate_competition_person...

19 lines
712 B

# 生成竞赛个人证书Job
class GenerateCompetitionPersonalCertificateJob < ApplicationJob
queue_as :default
def perform(prize_user_id)
@prize_user = CompetitionPrizeUser.find_by(id: prize_user_id)
return if @prize_user.blank? || @prize_user.certificate_exist?
template = @prize_user.user.is_teacher? ? 'teacher' : 'personal'
file = File.open(Rails.root.join("app/templates/competition_certificates/#{template}.html.erb"))
html = ERB.new(file.read).result(binding)
kit = PDFKit.new(html, page_width: 842, page_height: 595)
path = @prize_user.certificate_path
dir = File.dirname(path)
FileUtils.mkdir_p(dir) unless File.directory?(dir)
kit.to_pdf(path)
end
end