Class: ForestLiana::StripePaymentsGetter

Inherits:
Object
  • Object
show all
Defined in:
app/services/forest_liana/stripe_payments_getter.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params, secret_key, reference) ⇒ StripePaymentsGetter

Returns a new instance of StripePaymentsGetter.



5
6
7
8
9
# File 'app/services/forest_liana/stripe_payments_getter.rb', line 5

def initialize(params, secret_key, reference)
  @params = params
  @reference_model, @reference_field = reference_model(reference)
  Stripe.api_key = secret_key
end

Instance Attribute Details

#recordsObject

Returns the value of attribute records.



3
4
5
# File 'app/services/forest_liana/stripe_payments_getter.rb', line 3

def records
  @records
end

Instance Method Details

#countObject



11
12
13
# File 'app/services/forest_liana/stripe_payments_getter.rb', line 11

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

#fetch_charges(params) ⇒ Object



44
45
46
47
# File 'app/services/forest_liana/stripe_payments_getter.rb', line 44

def fetch_charges(params)
  return if reference_model_id && params[:customer].blank?
  Stripe::Charge.all(params)
end

#limitObject



73
74
75
76
77
78
79
80
81
# File 'app/services/forest_liana/stripe_payments_getter.rb', line 73

def limit
  return 10 unless pagination?

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

#offsetObject



62
63
64
65
66
67
68
69
70
71
# File 'app/services/forest_liana/stripe_payments_getter.rb', line 62

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

#pagination?Boolean

Returns:

  • (Boolean)


83
84
85
# File 'app/services/forest_liana/stripe_payments_getter.rb', line 83

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

#performObject



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'app/services/forest_liana/stripe_payments_getter.rb', line 15

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

  if reference_model_id
    resource = @reference_model.find(reference_model_id)
    query[:customer] = resource[@reference_field]
  end

  query['source'] = { object: :card }
  query['include[]'] = 'total_count'

  @charges = fetch_charges(query)

  @records = @charges.data.map do |d|
    d.created = Time.at(d.created).to_datetime
    d.amount /= 100.00

    query = {}
    query[@reference_field] = d.customer
    if @reference_model
      d.customer = @reference_model.find_by(query)
    else
      d.customer = nil
    end

    d
  end
end

#reference_model(reference) ⇒ Object



49
50
51
52
53
54
# File 'app/services/forest_liana/stripe_payments_getter.rb', line 49

def reference_model(reference)
  resource_name, reference_field = reference.split('.')
  reference_model = SchemaUtils.find_model_from_table_name(resource_name)

  [reference_model, reference_field]
end

#reference_model_idObject



56
57
58
59
60
# File 'app/services/forest_liana/stripe_payments_getter.rb', line 56

def reference_model_id
  if @reference_model
    @params["#{@reference_model.table_name.singularize()}Id"]
  end
end