38 lines
1.1 KiB
Ruby
38 lines
1.1 KiB
Ruby
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_later(message_source, receivers.pluck(:id), user.id, @atmeable.id) if Site.has_notice_menu?
|
|
end
|
|
end
|