Sha256: 950016817faf2d5bddac74f356bb0b131d61426558680e37eaf4b7e3245ba4f9

Contents?: true

Size: 1.05 KB

Versions: 3

Compression:

Stored size: 1.05 KB

Contents

require 'forwardable'

module ChartMogul
  module Import
    class CustomerInvoices < APIResource
      extend Forwardable
      include Enumerable

      set_resource_name 'Invoices'
      set_resource_path '/v1/import/customers/:customer_uuid/invoices'

      writeable_attr :invoices, default: []

      writeable_attr :customer_uuid

      include API::Actions::All
      include API::Actions::Create

      def serialize_invoices
        map(&:serialize_for_write)
      end

      def self.all(customer_uuid, options = {})
        super(options.merge(customer_uuid: customer_uuid))
      end

      def_delegators :invoices, :each, :[], :<<, :size, :length

      private

      def set_invoices(invoices_attributes)
        @invoices = invoices_attributes.map.with_index do |invoice_attributes, index|
          existing_invoice = invoices[index]

          if existing_invoice
            existing_invoice.assign_all_attributes(invoice_attributes)
          else
            Invoice.new_from_json(invoice_attributes)
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
chartmogul-ruby-0.1.4 lib/chartmogul/import/customer_invoices.rb
chartmogul-ruby-0.1.3 lib/chartmogul/import/customer_invoices.rb
chartmogul-ruby-0.1.2 lib/chartmogul/import/customer_invoices.rb