Sha256: e2f5eb124fc786624ddd1a1d581795b94a7ad7469cdd7b9ab886002b9cad4d93

Contents?: true

Size: 1.41 KB

Versions: 3

Compression:

Stored size: 1.41 KB

Contents

module ChurchCommunityBuilder

  class FundList < ApiObject

    include Enumerable

    attr_reader :count,
                :funds_array,
                :json_data #for debugging                

    def initialize(json)
      #funds_json = json_data['ccb_api']['response']['transaction_detail_types']['transaction_detail_type']
      @json_data = json['ccb_api']
      funds  = @json_data['response']['transaction_detail_types']
      @count = funds['count'].to_i #number of records

      # if funds['transaction_detail_type'] is a single item, it will be returned
      # as a Hash, rather than a single element Array, containing the Hash.
      if funds['transaction_detail_type'].is_a?(Array)
        @funds_array = funds['transaction_detail_type']
      elsif funds['transaction_detail_type'].is_a?(Hash)
        @funds_array = []
        @funds_array << funds['transaction_detail_type'] #array of each funds
      end
    end

    def all_names
      return [] unless @funds_array
      @funds_array.collect { |fund| fund['name'] }
    end

    def ids
      (@funds_array.collect { |fund| fund['id'].to_i }).uniq
    end

    def [](index)
      Fund.new( @funds_array[index] ) if @funds_array and @funds_array[index]
    end


    # This method is needed for Enumerable.
    def each &block
      @funds_array.each{ |fund| yield( Fund.new(fund) )}
    end


    def empty?
      @funds_array.size == 0 ? true : false
    end

  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
church-community-builder-0.2.2 lib/api/fund_list.rb
church-community-builder-0.2.1 lib/api/fund_list.rb
church-community-builder-0.2.0 lib/api/fund_list.rb