forgeplus/app/services/organizations/teams/update_service.rb

59 lines
1.4 KiB
Ruby

class Organizations::Teams::UpdateService < ApplicationService
attr_reader :user, :team, :params
def initialize(user, team, params)
@user = user
@team = team
@params = params
end
def call
Rails.logger.info("######Team update_service begin######")
Rails.logger.info("######params #{params}######")
ActiveRecord::Base.transaction do
update_team(update_params)
update_units
team.reload
team.setup_team_project!
update_gitea_team
end
Rails.logger.info("######Team update_service end######")
team
end
private
def update_params
if team.authorize == "owner"
update_params = params.slice(:description, :nickname)
else
update_params = params.slice(:name, :nickname, :description, :authorize, :includes_all_project, :can_create_org_project)
end
update_params
end
def units_params
%w(code issues pulls wiki releases)
end
def update_team(update_params)
team.update_attributes!(update_params)
end
def update_units
return if units_params.blank?
begin
team.team_units.map{|u|u.destroy!}
Rails.logger.info units_params
units_params.each do |unit|
TeamUnit.build(team&.organization&.id, team.id, unit)
end
rescue
raise ActiveRecord::Rollback, "TeamUnit update error"
end
end
def update_gitea_team
Gitea::Organization::Team::UpdateService.call(team&.organization&.gitea_token, team)
end
end