mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-09-20 14:45:56 +08:00
Implement Task Due Date Reminder notification [SCI-9562]
This commit is contained in:
parent
6308779668
commit
dd2a4a4047
|
@ -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
|
||||
|
|
12
app/jobs/my_modules/due_date_reminder_job.rb
Normal file
12
app/jobs/my_modules/due_date_reminder_job.rb
Normal 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
|
|
@ -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
|
||||
|
|
20
app/notifications/task_due_date_notification.rb
Normal file
20
app/notifications/task_due_date_notification.rb
Normal 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
|
|
@ -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
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
class AddTaskDueDateReminderNotification < ActiveRecord::Migration[7.0]
|
||||
def change
|
||||
add_column :my_modules, :notification_sent, :boolean, default: false
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue