Class: Jobs::GrantAnniversaryBadges

Inherits:
Scheduled show all
Defined in:
app/jobs/scheduled/grant_anniversary_badges.rb

Instance Method Summary collapse

Methods inherited from Scheduled

#perform

Methods inherited from Base

acquire_cluster_concurrency_lock!, clear_cluster_concurrency_lock!, cluster_concurrency, cluster_concurrency_redis_key, delayed_perform, #error_context, get_cluster_concurrency, #last_db_duration, #log, #perform, #perform_immediately

Instance Method Details

#execute(args) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'app/jobs/scheduled/grant_anniversary_badges.rb', line 7

def execute(args)
  return unless SiteSetting.enable_badges?
  return unless badge = Badge.find_by(id: Badge::Anniversary, enabled: true)

  start_date = args[:start_date] || 1.year.ago
  end_date = start_date + 1.year

  sql = BadgeQueries.anniversaries(start_date, end_date)
  user_ids = DB.query_single(sql)

  User
    .where(id: user_ids)
    .find_each { |user| BadgeGranter.grant(badge, user, created_at: end_date) }
end