Sha256: 0a663a1bde15e348b0c70e4c83d931012e5b8e839d704881c370d9529a0db611

Contents?: true

Size: 1.59 KB

Versions: 1

Compression:

Stored size: 1.59 KB

Contents

module ChartMogul
  class Customer < APIResource
    set_resource_name 'Customer'
    set_resource_path '/v1/customers'

    readonly_attr :uuid

    writeable_attr :external_id
    writeable_attr :name
    writeable_attr :email
    writeable_attr :company
    writeable_attr :country
    writeable_attr :state
    writeable_attr :city
    writeable_attr :zip
    writeable_attr :data_source_uuid
    writeable_attr :lead_created_at, type: :time
    writeable_attr :free_trial_started_at, type: :time

    include API::Actions::Create
    include API::Actions::Destroy

    def self.all(options = {})
      Customers.all(options)
    end

    def self.search(email)
      Customers.search(email)
    end

    def self.find_by_external_id(external_id)
      all(external_id: external_id).first
    end

    def subscriptions(options = {})
      @subscriptions ||= ChartMogul::Subscription.all(uuid, options)
    end

    def invoices(options = {})
      @invoices ||= ChartMogul::CustomerInvoices.all(uuid, options)
    end

    def invoices=(invoices_array)
      @invoices = ChartMogul::CustomerInvoices.new(customer_uuid: uuid, invoices: invoices_array)
    end


    class Customers < APIResource
      set_resource_name 'Customers'
      set_resource_path '/v1/customers'

      include Concerns::Entries
      include API::Actions::Custom
      include Concerns::Pageable
      include Concerns::Pageable2

      set_entry_class Customer

      def self.search(email)
        path = ChartMogul::ResourcePath.new('/v1/customers/search')
        custom!(:get, path.apply_with_get_params(email: email))
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
chartmogul-ruby-1.0.1 lib/chartmogul/customer.rb