Sha256: 7e597c3c11ad9876a5658ff752ca74282ac29507c6611ffe6490f039940f7762

Contents?: true

Size: 1.42 KB

Versions: 15

Compression:

Stored size: 1.42 KB

Contents

# frozen_string_literal: true

require 'forwardable'

module ChartMogul
  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
    include Concerns::Pageable2

    def serialize_invoices
      map(&:serialize_for_write)
    end

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

    def self.destroy_all!(data_source_uuid, customer_uuid)
      path = ChartMogul::ResourcePath.new('v1/data_sources/:data_source_uuid/customers/:customer_uuid/invoices')
      handling_errors do
        connection.delete(path.apply(data_source_uuid: data_source_uuid, customer_uuid: customer_uuid))
      end
      true
    end


    def_delegators :invoices, :each, :[], :<<, :size, :length, :empty?, :first

    private

    # TODO: replace with Entries concern?
    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

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
chartmogul-ruby-3.3.0 lib/chartmogul/customer_invoices.rb
chartmogul-ruby-3.2.0 lib/chartmogul/customer_invoices.rb
chartmogul-ruby-3.1.0 lib/chartmogul/customer_invoices.rb
chartmogul-ruby-3.0.2 lib/chartmogul/customer_invoices.rb
chartmogul-ruby-3.0.0 lib/chartmogul/customer_invoices.rb
chartmogul-ruby-2.9.0 lib/chartmogul/customer_invoices.rb
chartmogul-ruby-2.1.0 lib/chartmogul/customer_invoices.rb
chartmogul-ruby-2.0.0 lib/chartmogul/customer_invoices.rb
chartmogul-ruby-1.7.3 lib/chartmogul/customer_invoices.rb
chartmogul-ruby-1.7.2 lib/chartmogul/customer_invoices.rb
chartmogul-ruby-1.7.1 lib/chartmogul/customer_invoices.rb
chartmogul-ruby-1.6.9 lib/chartmogul/customer_invoices.rb
chartmogul-ruby-1.6.8 lib/chartmogul/customer_invoices.rb
chartmogul-ruby-1.6.7 lib/chartmogul/customer_invoices.rb
chartmogul-ruby-1.6.6 lib/chartmogul/customer_invoices.rb