Sha256: 62b713db25d104704a84f37e6657eee246342d138febe844140acca82b07069b

Contents?: true

Size: 1.83 KB

Versions: 40

Compression:

Stored size: 1.83 KB

Contents

module Brightbox
  # These are collaborations from the perspective of the invited user so all
  # that is expected is listing, getting details, accepting, rejecting and
  # destroying them.
  #
  class UserCollaboration < Api
    def self.all
      conn.user_collaborations
    end

    def self.get(id)
      conn.user_collaborations.get(id)
    end

    # This returns the OPEN collaboration based on an account ID to work in with
    # the UI.
    #
    # @todo Ensure filtering works when many collaborations exist between
    #   accounts, and correct states are honoured.
    #
    # @param [String] account_id The identifier of the account
    # @return [Brightbox::UserCollaboration] if a valid collaboration is found
    # @return [NilClass] if no collaboration exists for account
    #
    def self.get_for_account(account_id)
      collaborations = conn.user_collaborations
      open_collaborations = collaborations.select { |col| %w(pending accepted).include?(col.status) }
      collaboration = open_collaborations.find do |col|
        col.account_id == account_id
      end

      if collaboration
        new(collaboration)
      else
        nil
      end
    end

    def self.default_field_order
      [:id, :status, :account, :role]
    end

    def to_s
      @id
    end

    # Accepts the collaboration request
    def accept
      fog_model.accept
    end

    # Rejects the collaboration request
    def reject
      fog_model.reject
    end

    def destroy
      fog_model.destroy
    end

    # "removes" the invite by either rejecting or ending it based on the state
    # of the collaboration
    def remove
      if status == "pending"
        reject
      else
        destroy
      end
    end

    def to_row
      row_attributes = attributes
      row_attributes[:account] = attributes[:account]["id"]
      row_attributes
    end
  end
end

Version data entries

40 entries across 40 versions & 1 rubygems

Version Path
brightbox-cli-3.3.0 lib/brightbox-cli/user_collaboration.rb
brightbox-cli-3.2.0 lib/brightbox-cli/user_collaboration.rb
brightbox-cli-3.1.0 lib/brightbox-cli/user_collaboration.rb
brightbox-cli-3.0.1 lib/brightbox-cli/user_collaboration.rb
brightbox-cli-3.0.0 lib/brightbox-cli/user_collaboration.rb
brightbox-cli-2.12.0 lib/brightbox-cli/user_collaboration.rb
brightbox-cli-2.11.2 lib/brightbox-cli/user_collaboration.rb
brightbox-cli-2.11.1 lib/brightbox-cli/user_collaboration.rb
brightbox-cli-2.11.0 lib/brightbox-cli/user_collaboration.rb
brightbox-cli-2.10.0 lib/brightbox-cli/user_collaboration.rb
brightbox-cli-2.9.3 lib/brightbox-cli/user_collaboration.rb
brightbox-cli-2.9.2 lib/brightbox-cli/user_collaboration.rb
brightbox-cli-2.9.1 lib/brightbox-cli/user_collaboration.rb
brightbox-cli-2.9.0 lib/brightbox-cli/user_collaboration.rb
brightbox-cli-2.8.2 lib/brightbox-cli/user_collaboration.rb
brightbox-cli-2.8.1 lib/brightbox-cli/user_collaboration.rb
brightbox-cli-2.8.0 lib/brightbox-cli/user_collaboration.rb
brightbox-cli-2.7.1 lib/brightbox-cli/user_collaboration.rb
brightbox-cli-2.7.0 lib/brightbox-cli/user_collaboration.rb
brightbox-cli-2.6.0 lib/brightbox-cli/user_collaboration.rb