Sha256: a68334d58ff684b2023f64c6c887a6c1dd05c9b9745910bbd67eb816bbdb771a

Contents?: true

Size: 1.08 KB

Versions: 1

Compression:

Stored size: 1.08 KB

Contents

module Economic
  class EntityProxy
    class << self
      # Returns the class this Proxy is a proxy for
      def entity_class
        Entity
      end
    end

    include Enumerable

    attr_reader :owner, :items

    def initialize(owner)
      @owner = owner
      @items = []
    end

    def session
      owner.session
    end

    # Returns a new, unpersisted Economic::Entity
    def build(properties = {})
      entity = self.class.entity_class.new(:session => session)

      entity.update_properties(properties)
      entity.partial = false

      entity
    end

    # Gets data for Entity from the API
    def find(number)
      entity_hash = session.request self.class.entity_class.soap_action(:get_data)  do
        soap.body = {
          'entityHandle' => {
            'Number' => number
          }
        }
      end
      entity = build(entity_hash)
      entity.persisted = true
      entity
    end

    # Add item to proxy
    def <<(item)
      items << item
    end

    def each
      items.each { |i| yield i }
    end

    def empty?
      items.empty?
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rconomic-0.1.0 lib/economic/proxies/entity_proxy.rb