Module: PaidUp::Mixins::Subscriber::InstanceMethods

Defined in:
lib/paid_up/mixins/subscriber.rb

Overview

Included by subscriber mixin

Instance Method Summary collapse

Instance Method Details

#can_downgrade_to?(plan_to_check) ⇒ Boolean

Returns:

  • (Boolean)


84
85
86
87
88
89
# File 'lib/paid_up/mixins/subscriber.rb', line 84

def can_downgrade_to?(plan_to_check)
  plan.present? && (
    !subscribed_to?(plan_to_check) &&
    (plan_to_check.sort_order.to_i < plan.sort_order.to_i)
  )
end

#can_upgrade_to?(plan_to_check) ⇒ Boolean

Returns:

  • (Boolean)


77
78
79
80
81
82
# File 'lib/paid_up/mixins/subscriber.rb', line 77

def can_upgrade_to?(plan_to_check)
  plan.nil? || (
    !subscribed_to?(plan_to_check) &&
    (plan_to_check.sort_order.to_i > plan.sort_order.to_i)
  )
end

#cardsObject



35
36
37
# File 'lib/paid_up/mixins/subscriber.rb', line 35

def cards
  stripe_data.present? && stripe_data.sources.all(object: 'card')
end


68
69
70
71
# File 'lib/paid_up/mixins/subscriber.rb', line 68

def paid_up_subscription
  stripe_data.nil? && subscribe_to_free_plan
  @subscription
end

#plan_stripe_idObject



64
65
66
# File 'lib/paid_up/mixins/subscriber.rb', line 64

def plan_stripe_id
  paid_up_subscription&.stripe_data&.plan&.id
end

#reload(*args, &blk) ⇒ Object



25
26
27
28
29
# File 'lib/paid_up/mixins/subscriber.rb', line 25

def reload(*args, &blk)
  super(*args, &blk)
  load_stripe_data
  self
end

#rolify_setting(table_name) ⇒ Object



60
61
62
# File 'lib/paid_up/mixins/subscriber.rb', line 60

def rolify_setting(table_name)
  PaidUp::RolifyFeatureSettingType.new(name: table_name, user: self)
end

#stripe_dataObject



31
32
33
# File 'lib/paid_up/mixins/subscriber.rb', line 31

def stripe_data
  (stripe_id.present? || new_record?) && @customer_stripe_data
end

#subscribe_to_free_planObject



52
53
54
# File 'lib/paid_up/mixins/subscriber.rb', line 52

def subscribe_to_free_plan
  subscribe_to_plan PaidUp::Plan.free
end

#subscribe_to_plan(new_plan, stripe_token = nil, coupon = nil, trial_end = nil) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/paid_up/mixins/subscriber.rb', line 39

def subscribe_to_plan(
  new_plan, stripe_token = nil, coupon = nil, trial_end = nil
)
  # If there is an existing subscription
  if stripe_id.present? && paid_up_subscription.present?
    paid_up_subscription.update(new_plan, stripe_token, coupon, trial_end)
  else # Totally new subscription
    paid_up_subscription.create(new_plan, stripe_token, coupon, trial_end)
  end
  Rails.cache.delete("#{stripe_id}/stripe_data")
  reload
end

#subscribed_to?(plan_to_check) ⇒ Boolean

Returns:

  • (Boolean)


73
74
75
# File 'lib/paid_up/mixins/subscriber.rb', line 73

def subscribed_to?(plan_to_check)
  plan.present? && plan.id == plan_to_check.id
end

#table_setting(table_name) ⇒ Object



56
57
58
# File 'lib/paid_up/mixins/subscriber.rb', line 56

def table_setting(table_name)
  PaidUp::TableFeatureSettingType.new(name: table_name, user: self)
end

#using_free_plan?Boolean

Returns:

  • (Boolean)


91
92
93
94
# File 'lib/paid_up/mixins/subscriber.rb', line 91

def using_free_plan?
  plan.nil? || stripe_data.delinquent ||
    plan.stripe_id == PaidUp.configuration.free_plan_stripe_id
end