forked from Gitlink/forgeplus
47 lines
2.1 KiB
Ruby
47 lines
2.1 KiB
Ruby
class SendTransferProjectAppliedMessageJob < ApplicationJob
|
|
queue_as :default
|
|
|
|
def perform(applied_transfer_project, applied_user, message_status)
|
|
project = applied_transfer_project.project
|
|
owner = project.owner
|
|
return unless project.present?
|
|
return unless owner.present?
|
|
if owner.is_a?(Organization)
|
|
receivers = project.managers + owner.team_users.joins(:team).where(teams: {authorize: %w(owner admin)})
|
|
else
|
|
receivers = project.managers
|
|
end
|
|
receivers.each do |rec|
|
|
next if applied_user.id == rec.user_id # 自己不要给自己发通知
|
|
AppliedMessage.create!(user_id: rec.user_id,
|
|
applied: applied_transfer_project,
|
|
status: message_status,
|
|
name: build_name(project.name, applied_transfer_project&.owner&.real_name, message_status, applied_user&.real_name),
|
|
applied_user_id: applied_user.id,
|
|
project_id: project.id)
|
|
end
|
|
if message_status == 'successed' # 如果转移成功,给转移发起者发通知已转移成功
|
|
AppliedMessage.find_or_create_by!(user_id: applied_transfer_project.user_id,
|
|
applied: applied_transfer_project,
|
|
status: message_status,
|
|
name: build_name(project.name, applied_transfer_project&.owner&.real_name, message_status),
|
|
applied_user_id: applied_user.id,
|
|
project_id: project.id)
|
|
end
|
|
end
|
|
|
|
private
|
|
def build_name(repo_name, owner_name, message_status, applied_name="")
|
|
case message_status
|
|
when 'canceled'
|
|
return "取消转移【#{repo_name}】仓库"
|
|
when 'common'
|
|
return "正在将【#{repo_name}】仓库转移给【#{owner_name}】"
|
|
when 'successed'
|
|
return "【#{repo_name}】仓库成功转移给【#{owner_name}】"
|
|
when 'failure'
|
|
return "拒绝转移【#{repo_name}】仓库"
|
|
end
|
|
""
|
|
end
|
|
end |