37 lines
911 B
Ruby
37 lines
911 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Jobs
|
|
class AdminProblems < ::Jobs::Scheduled
|
|
every 30.minutes
|
|
|
|
def execute(args)
|
|
Notification
|
|
.where(notification_type: Notification.types[:admin_problems])
|
|
.where("created_at < ?", 7.days.ago)
|
|
.destroy_all
|
|
|
|
return if !persistent_problems?
|
|
|
|
notified_user_ids =
|
|
Notification.where(notification_type: Notification.types[:admin_problems]).pluck(:user_id)
|
|
|
|
users = Group[:admins].users.where.not(id: notified_user_ids)
|
|
|
|
users.each do |user|
|
|
Notification.create!(
|
|
notification_type: Notification.types[:admin_problems],
|
|
user_id: user.id,
|
|
data: "{}",
|
|
)
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def persistent_problems?
|
|
problems_started_at = AdminDashboardData.problems_started_at
|
|
problems_started_at && problems_started_at < 2.days.ago
|
|
end
|
|
end
|
|
end
|