Implement Task Due Date Reminder notification [SCI-9562]

This commit is contained in:
Giga Chubinidze 2023-11-02 07:07:35 +04:00
parent 6308779668
commit dd2a4a4047
6 changed files with 49 additions and 0 deletions

View file

@ -187,6 +187,10 @@ class MyModulesController < ApplicationController
log_activity(:rename_task) if name_changed
log_start_date_change_activity(start_date_changes) if start_date_changes.present?
log_due_date_change_activity(due_date_changes) if due_date_changes.present?
if due_date_changes
@my_module.update(notification_sent: false)
end
end
end
if saved

View file

@ -0,0 +1,12 @@
# frozen_string_literal: true
class DueDateReminderJob < ApplicationJob
def perform
my_modules = MyModule.approaching_due_dates
my_modules.each do |task|
TaskDueDateNotification.send_notifications({ my_module_id: task.id })
task.update(notification_sent: true)
end
end
end

View file

@ -139,6 +139,10 @@ class MyModule < ApplicationRecord
joins(experiment: :project).where(experiment: { projects: { team: teams } })
end
def self.approaching_due_dates
where(notification_sent: false).select { |task| task.is_one_day_prior? }
end
def parent
experiment
end

View file

@ -0,0 +1,20 @@
# frozen_string_literal: true
class TaskDueDateNotification < BaseNotification
def message
I18n.t(
'notifications.notification.my_module_due_date_reminder_html',
my_module_name: subject.name
)
end
def self.subtype
:my_module_due_date_reminder
end
def title; end
def subject
MyModule.find(params[:my_module_id])
end
end

View file

@ -21,3 +21,7 @@ if ENV['ENABLE_FLUICS_SYNC'] == 'true'
LabelPrinters::Fluics::SyncService.new.sync_templates! if LabelPrinter.fluics.any?
end
end
scheduler.every '1h' do
DueDateReminderJob.perform_now
end

View file

@ -0,0 +1,5 @@
class AddTaskDueDateReminderNotification < ActiveRecord::Migration[7.0]
def change
add_column :my_modules, :notification_sent, :boolean, default: false
end
end