add: atme service

This commit is contained in:
2021-10-20 09:39:21 +08:00
parent 2273b4817e
commit 1a449d1dc6
5 changed files with 82 additions and 25 deletions

View File

@@ -0,0 +1,37 @@
class AtmeService < ApplicationService
Error = Class.new(StandardError)
attr_reader :user, :receivers, :atmeable
def initialize(user, receivers, atmeable)
@user = user
@receivers = receivers
@atmeable = atmeable
end
def call
Rails.logger.info "[ATME] service args: [user]=>#{user}, [receivers]=>#{receivers}, [atmeable]=>#{atmeable}"
return if atmeable.nil?
Rails.logger.info "[ATME] atmeable class name is: #{ atmeable.class.name}"
case atmeable.class.name
when 'Issue'
message_source = 'IssueAtme'
when 'PullRequest'
message_source = 'PullRequestAtme'
when 'Journal'
journal = Journal.find_by_id(atmeable.id)
if journal.present?
if journal&.issue&.pull_request.present?
@atmeable = journal&.issue&.pull_request
message_source = 'PullRequestAtme'
else
@atmeable = journal&.issue
message_source = 'IssueAtme'
end
end
else
return
end
SendTemplateMessageJob.perform_now(message_source, receivers, user.id, @atmeable.id) if Site.has_notice_menu?
end
end