module Tournaments class GrantBroadcastAccess def self.call(invitation:, user:) new(invitation: invitation, user: user).call end def initialize(invitation:, user:) @invitation = invitation @user = user end def call team = Tournaments::EnsureBroadcastTeam.call(@invitation.tournament) membership = UserTeam.find_or_initialize_by(user: @user, team: team) membership.role = "member" if membership.new_record? membership.staff_kind = "transmission" membership.save! membership end end end