Sha256: 969ae21f61b94be70161df7d1a956abf6c2347a08f21790f479926135e44f933

Contents?: true

Size: 1.98 KB

Versions: 46

Compression:

Stored size: 1.98 KB

Contents

module ForestLiana
  class StripeInvoicesGetter
    attr_accessor :records

    def initialize(params, secret_key, reference)
      @params = params
      Stripe.api_key = ForestLiana.integrations[:stripe][:api_key]
    end

    def count
      @invoices.try(:total_count) || 0
    end

    def perform
      query = { limit: limit, offset: offset }

      if @params[:id] && user_collection && user_field
        resource = user_collection.find(@params[:id])
        query[:customer] = resource[user_field]
      end

      query['include[]'] = 'total_count'
      @invoices = fetch_invoices(query)
      if @invoices.blank?
        @records = []
        return
      end

      @records = @invoices.data.map do |d|
        d.date = Time.at(d.date).to_datetime
        d.period_start = Time.at(d.period_start).to_datetime
        d.period_end = Time.at(d.period_end).to_datetime
        d.subtotal /= 100.00
        d.total /= 100.00
        d.amount_due /= 100.00

        query = {}
        query[user_field] = d.customer
        if user_collection
          d.customer = user_collection.find_by(query)
        else
          d.customer = nil
        end

        d
      end
    end

    def fetch_invoices(params)
      return if @params[:id] && params[:customer].blank?
      Stripe::Invoice.all(params)
    end

    def offset
      return 0 unless pagination?

      number = @params[:page][:number]
      if number && number.to_i > 0
        (number.to_i - 1) * limit
      else
        0
      end
    end

    def limit
      return 10 unless pagination?

      if @params[:page][:size]
        @params[:page][:size].to_i
      else
        10
      end
    end

    def pagination?
      @params[:page] && @params[:page][:number]
    end

    def user_collection
      ForestLiana.integrations
        .try(:[], :stripe)
        .try(:[], :user_collection)
        .try(:constantize)
    end

    def user_field
      ForestLiana.integrations
        .try(:[], :stripe)
        .try(:[], :user_field)
    end
  end
end

Version data entries

46 entries across 46 versions & 1 rubygems

Version Path
forest_liana-1.3.28 app/services/forest_liana/stripe_invoices_getter.rb
forest_liana-1.3.27 app/services/forest_liana/stripe_invoices_getter.rb
forest_liana-1.3.26 app/services/forest_liana/stripe_invoices_getter.rb
forest_liana-1.3.25 app/services/forest_liana/stripe_invoices_getter.rb
forest_liana-1.3.24 app/services/forest_liana/stripe_invoices_getter.rb
forest_liana-1.3.23 app/services/forest_liana/stripe_invoices_getter.rb
forest_liana-1.3.22 app/services/forest_liana/stripe_invoices_getter.rb
forest_liana-1.3.21 app/services/forest_liana/stripe_invoices_getter.rb
forest_liana-1.3.20 app/services/forest_liana/stripe_invoices_getter.rb
forest_liana-1.3.19 app/services/forest_liana/stripe_invoices_getter.rb
forest_liana-1.3.18 app/services/forest_liana/stripe_invoices_getter.rb
forest_liana-1.3.17 app/services/forest_liana/stripe_invoices_getter.rb
forest_liana-1.3.16 app/services/forest_liana/stripe_invoices_getter.rb
forest_liana-1.3.15 app/services/forest_liana/stripe_invoices_getter.rb
forest_liana-1.3.14 app/services/forest_liana/stripe_invoices_getter.rb
forest_liana-1.3.13 app/services/forest_liana/stripe_invoices_getter.rb
forest_liana-1.3.12 app/services/forest_liana/stripe_invoices_getter.rb
forest_liana-1.3.11 app/services/forest_liana/stripe_invoices_getter.rb
forest_liana-1.3.10 app/services/forest_liana/stripe_invoices_getter.rb
forest_liana-1.3.9 app/services/forest_liana/stripe_invoices_getter.rb