Skip to content
Snippets Groups Projects
Commit cc51b1a7 authored by Teal's avatar Teal
Browse files

add upcoming job notifier

parent 5857baf6
No related branches found
No related tags found
No related merge requests found
class TelegramNotifyUpcomingJob < ApplicationJob
queue_as :default
def perform(**args)
Session.scheduled.includes(:stage, :assignments).where(stage: { name: ["Stage 1", "Stage 2", "Standby"] }).where(starts_at: Time.now..(Time.now + args[:interval])).order(:starts_at).each do |session|
assignees = session.assignments.map(&:user)
if assignees.length.positive?
notify_names = assignees.map { |a| a.telegram_username ? "@#{a.telegram_username}" : a.name }
message = notify_names.join(' ') + ": Your scheduled session <i>#{session.title}</i> starts at <b>#{session.starts_at.strftime("%H:%M")}</b> on <b>#{session.stage.name}</b>"
TelegramGroupChatNotificationJob.perform_later(target: "-316096320", text: message, parse_mode: 'HTML')
# TelegramGroupChatNotificationJob.perform_now(target: "2192297", text: message, parse_mode: 'HTML')
else
message = "<b>⚠️ No assignees</b> for session <i>#{session.title}</i> starting at <b>#{session.starts_at.strftime("%H:%M")}</b> on <b>#{session.stage.name}</b>"
TelegramGroupChatNotificationJob.perform_later(target: "-316096320", text: message, parse_mode: 'HTML')
# TelegramGroupChatNotificationJob.perform_now(target: "2192297", text: message, parse_mode: 'HTML')
end
end
end
end
......@@ -15,3 +15,4 @@
#
Crono.perform(FetchConferenceDataJob, 'rp2024').every 5.minutes
Crono.perform(TelegramNotifyUpcomingJob, interval: 15.minutes).every 15.minutes
require "test_helper"
class TelegramNotifyUpcomingJobTest < ActiveJob::TestCase
# test "the truth" do
# assert true
# end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment