From 1ac2ddfaa5805047a57ced72452f816dc0b4b284 Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 16 Feb 2022 11:46:34 +0800 Subject: [PATCH] fix: default setting for new template message --- app/jobs/send_template_message_job.rb | 4 +++ app/models/message_template/issue_expire.rb | 28 ++++++++++++------- app/models/message_template/project_forked.rb | 4 ++- .../message_template/project_milestone.rb | 6 +++- .../project_milestone_completed.rb | 8 ++++-- .../message_template/project_praised.rb | 4 ++- 6 files changed, 39 insertions(+), 15 deletions(-) diff --git a/app/jobs/send_template_message_job.rb b/app/jobs/send_template_message_job.rb index 4cde94c4b..de75024dd 100644 --- a/app/jobs/send_template_message_job.rb +++ b/app/jobs/send_template_message_job.rb @@ -52,6 +52,10 @@ class SendTemplateMessageJob < ApplicationJob receivers = User.where(id: [issue&.assigned_to_id, issue&.author_id]) receivers_string, content, notification_url = MessageTemplate::IssueExpire.get_message_content(receivers, issue) Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {issue_id: issue.id}) + receivers.find_each do |receiver| + receivers_email_string, email_title, email_content = MessageTemplate::IssueExpire.get_email_message_content(receiver, issue) + Notice::Write::EmailCreateService.call(receivers_email_string, email_title, email_content) + end when 'IssueDeleted' operator_id, issue_title, issue_assigned_to_id, issue_author_id = args[0], args[1], args[2], args[3] operator = User.find_by_id(operator_id) diff --git a/app/models/message_template/issue_expire.rb b/app/models/message_template/issue_expire.rb index 88593d848..aae3a3c9b 100644 --- a/app/models/message_template/issue_expire.rb +++ b/app/models/message_template/issue_expire.rb @@ -16,15 +16,21 @@ class MessageTemplate::IssueExpire < MessageTemplate # MessageTemplate::IssueCreatorExpire.get_message_content(User.where(login: 'yystopf'), Issue.last) - def self.get_message_content(receiver, issue) - if receiver.user_template_message_setting.present? - return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::IssueExpire"] - project = issue&.project - owner = project&.owner - content = sys_notice.gsub('{title}', issue&.subject) - url = notification_url.gsub('{owner}', owner&.login).gsub('{identifier}', project&.identifier).gsub('{id}', issue&.id.to_s) - - return receivers_string(receivers), content, url + def self.get_message_content(receivers, issue) + receivers.each do |receiver| + if receiver.user_template_message_setting.present? + send_setting = receiver.user_template_message_setting.notification_body["CreateOrAssign::IssueExpire"] + send_setting = send_setting.nil? ? UserTemplateMessageSetting.init_notification_body["CreateOrAssign::IssueExpire"] : send_setting + receivers = receivers.where.not(id: receiver.id) unless send_setting + end + end + return '', '', '' if receivers.blank? + project = issue&.project + owner = project&.owner + content = sys_notice.gsub('{title}', issue&.subject) + url = notification_url.gsub('{owner}', owner&.login).gsub('{identifier}', project&.identifier).gsub('{id}', issue&.id.to_s) + + return receivers_string(receivers), content, url else return '', '', '' end @@ -35,7 +41,9 @@ class MessageTemplate::IssueExpire < MessageTemplate def self.get_email_message_content(receiver, issue) if receiver.user_template_message_setting.present? - return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::IssueExpire"] + send_setting = receiver.user_template_message_setting.init_email_body["CreateOrAssign::IssueExpire"] + send_setting = send_setting.nil? ? UserTemplateMessageSetting.init_email_body["CreateOrAssign::IssueExpire"] : send_setting + return '', '', '' unless send_setting project = issue&.project owner = project&.owner diff --git a/app/models/message_template/project_forked.rb b/app/models/message_template/project_forked.rb index a395d0db6..c119feed6 100644 --- a/app/models/message_template/project_forked.rb +++ b/app/models/message_template/project_forked.rb @@ -19,7 +19,9 @@ class MessageTemplate::ProjectForked < MessageTemplate def self.get_message_content(receivers, user, project) receivers.each do |receiver| if receiver.user_template_message_setting.present? - receivers = receivers.where.not(id: receiver.id) unless receiver.user_template_message_setting.notification_body["ManageProject::Forked"] + send_setting = receiver.user_template_message_setting.notification_body["ManageProject::Forked"] + send_setting = send_setting.nil? ? UserTemplateMessageSetting.init_notification_body["ManageProject::Forked"] : send_setting + receivers = receivers.where.not(id: receiver.id) unless send_setting end end return '', '', '' if receivers.blank? diff --git a/app/models/message_template/project_milestone.rb b/app/models/message_template/project_milestone.rb index 8c9c47d16..3436908e0 100644 --- a/app/models/message_template/project_milestone.rb +++ b/app/models/message_template/project_milestone.rb @@ -19,6 +19,8 @@ class MessageTemplate::ProjectMilestone < MessageTemplate def self.get_message_content(receivers, operator, milestone) receivers.each do |receiver| if receiver.user_template_message_setting.present? + send_setting = receiver.user_template_message_setting.notification_body["ManageProject::Milestone"] + send_setting = send_setting.nil? ? UserTemplateMessageSetting.init_notification_body["ManageProject::Milestone"] : send_setting receivers = receivers.where.not(id: receiver.id) unless receiver.user_template_message_setting.notification_body["ManageProject::Milestone"] end end @@ -36,7 +38,9 @@ class MessageTemplate::ProjectMilestone < MessageTemplate def self.get_email_message_content(receiver, operator, milestone) if receiver.user_template_message_setting.present? - return '', '', '' unless receiver.user_template_message_setting.email_body["ManageProject::Milestone"] + send_setting = receiver.user_template_message_setting.email_body["ManageProject::Milestone"] + send_setting = send_setting.nil? ? UserTemplateMessageSetting.init_email_body["ManageProject::Milestone"] : send_setting + return '', '', '' unless send_setting project = milestone&.project owner = project&.owner title = email_title diff --git a/app/models/message_template/project_milestone_completed.rb b/app/models/message_template/project_milestone_completed.rb index eec895a6b..899af8d61 100644 --- a/app/models/message_template/project_milestone_completed.rb +++ b/app/models/message_template/project_milestone_completed.rb @@ -19,7 +19,9 @@ class MessageTemplate::ProjectMilestoneCompleted < MessageTemplate def self.get_message_content(receivers, milestone) receivers.each do |receiver| if receiver.user_template_message_setting.present? - receivers = receivers.where.not(id: receiver.id) unless receiver.user_template_message_setting.notification_body["ManageProject::MilestoneCompleted"] + send_setting = receiver.user_template_message_setting.notification_body["ManageProject::MilestoneCompleted"] + send_setting = send_setting.nil? ? UserTemplateMessageSetting.init_notification_body["ManageProject::MilestoneCompleted"] : send_setting + receivers = receivers.where.not(id: receiver.id) unless send_setting end end return '', '', '' if receivers.blank? @@ -36,7 +38,9 @@ class MessageTemplate::ProjectMilestoneCompleted < MessageTemplate def self.get_email_message_content(receiver, milestone) if receiver.user_template_message_setting.present? - return '', '', '' unless receiver.user_template_message_setting.email_body["ManageProject::MilestoneCompleted"] + send_setting = receiver.user_template_message_setting.email_body["ManageProject::MilestoneCompleted"] + send_setting = send_setting.nil? ? UserTemplateMessageSetting.init_email_body["ManageProject::MilestoneCompleted"] : send_setting + return '', '', '' unless send_setting project = milestone&.project owner = project&.owner title = email_title diff --git a/app/models/message_template/project_praised.rb b/app/models/message_template/project_praised.rb index 35af6148f..1686b3197 100644 --- a/app/models/message_template/project_praised.rb +++ b/app/models/message_template/project_praised.rb @@ -19,7 +19,9 @@ class MessageTemplate::ProjectPraised < MessageTemplate def self.get_message_content(receivers, user, project) receivers.each do |receiver| if receiver.user_template_message_setting.present? - receivers = receivers.where.not(id: receiver.id) unless receiver.user_template_message_setting.notification_body["ManageProject::Praised"] + send_setting = receiver.user_template_message_setting.notification_body["ManageProject::Praised"] + send_setting = send_setting.nil? ? UserTemplateMessageSetting.init_notification_body["ManageProject::Praised"] : send_setting + receivers = receivers.where.not(id: receiver.id) unless send_setting end end return '', '', '' if receivers.blank?