mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-10 01:01:39 -05:00
32 lines
812 B
Ruby
32 lines
812 B
Ruby
|
|
# frozen_string_literal: true
|
||
|
|
|
||
|
|
class Users::Digests::EmailSendingJob < ApplicationJob
|
||
|
|
queue_as :mailers
|
||
|
|
|
||
|
|
def perform(user_id, year)
|
||
|
|
user = User.find(user_id)
|
||
|
|
digest = user.digests.yearly.find_by(year: year)
|
||
|
|
|
||
|
|
return unless should_send_email?(user, digest)
|
||
|
|
|
||
|
|
Users::DigestsMailer.with(user: user, digest: digest).year_end_digest.deliver_later
|
||
|
|
|
||
|
|
digest.update!(sent_at: Time.current)
|
||
|
|
rescue ActiveRecord::RecordNotFound
|
||
|
|
ExceptionReporter.call(
|
||
|
|
'Users::Digests::EmailSendingJob',
|
||
|
|
"User with ID #{user_id} not found. Skipping year-end digest email."
|
||
|
|
)
|
||
|
|
end
|
||
|
|
|
||
|
|
private
|
||
|
|
|
||
|
|
def should_send_email?(user, digest)
|
||
|
|
return false unless user.safe_settings.digest_emails_enabled?
|
||
|
|
return false if digest.blank?
|
||
|
|
return false if digest.sent_at.present?
|
||
|
|
|
||
|
|
true
|
||
|
|
end
|
||
|
|
end
|