Class: BlogUpdateWorker

Inherits:
Object
  • Object
show all
Includes:
Sidekiq::Job
Defined in:
app/workers/blog_update_worker.rb

Overview

Creates a CampaignEmail on Campaign 527 each Monday at 2pm Central when new posts exist.
The campaign system handles delivery, suppression, dedup, and open/click tracking.

Constant Summary collapse

CAMPAIGN_ID =

Campaign id.

527
MASTER_TEMPLATE_SYSTEM_CODE =

Master template system code.

'BLOG_UPDATE'
RECENT_ARTICLES_COUNT =

Default count of recent articles.

5
SENDER_EMAIL =

Sender email.

'"WarmlyYours" <marketing@warmlyyours.com>'

Instance Method Summary collapse

Instance Method Details

#performObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'app/workers/blog_update_worker.rb', line 19

def perform
  new_posts = posts_since_last_monday
  return if new_posts.empty?

  master_template = EmailTemplate.find_by(system_code: MASTER_TEMPLATE_SYSTEM_CODE)
  if master_template&.body_v4_email.blank?
    logger.error '[BlogUpdateWorker] BLOG_UPDATE master template not found or has no body_v4_email'
    return
  end

  recent_posts = Post.published
                     .where.not(id: new_posts.map(&:id))
                     .order(published_at: :desc)
                     .limit(RECENT_ARTICLES_COUNT)

  rendered_body = render_weekly_body(master_template, new_posts, recent_posts)
  campaign_email = create_campaign_email(master_template, rendered_body, new_posts)

  logger.info "[BlogUpdateWorker] Created CampaignEmail ##{campaign_email.id} with #{new_posts.size} new post(s)"
  campaign_email.transmit_now!
end