forgeplus/app/services/atme_service.rb

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