Class: Charger::Subscription
- Inherits:
-
Object
- Object
- Charger::Subscription
- Includes:
- Resource
- Defined in:
- lib/charger/subscription.rb
Constant Summary collapse
- STATES =
%w{trialing trial_ended assessing active soft_failure past_due suspended canceled unpaid expired}
Class Method Summary collapse
-
.all ⇒ Array<Subscription>
This is a VERY long running task.
-
.find(id) ⇒ Subscription
Finds a [Subscription] in chargify.
-
.page(num = 1, limit = 20) ⇒ Array<Subscription>
Get all of the subscriptions for a specific page.
Instance Method Summary collapse
- #activated_between?(a, b) ⇒ Boolean
- #activated_on?(date) ⇒ Boolean
- #active? ⇒ Boolean
- #assessing? ⇒ Boolean
- #canceled? ⇒ Boolean
- #canceled_between?(a, b) ⇒ Boolean
- #canceled_on?(date) ⇒ Boolean
- #end_of_life? ⇒ Boolean
- #events(force = false) ⇒ Object
- #expired? ⇒ Boolean
- #line_items(force = false) ⇒ Object
- #live? ⇒ Boolean
- #mrr ⇒ Object
- #past_due? ⇒ Boolean
- #persisted? ⇒ Boolean
- #problem? ⇒ Boolean
- #soft_failure? ⇒ Boolean
- #statements(force = false) ⇒ Object
- #suspended? ⇒ Boolean
- #total ⇒ Object
- #transactions(force = false) ⇒ Object
- #trial_ended? ⇒ Boolean
- #trialing? ⇒ Boolean
- #unpaid? ⇒ Boolean
Class Method Details
.all ⇒ Array<Subscription>
This is a VERY long running task. It will scrape all of the subscriptions in the chargify account/
49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/charger/subscription.rb', line 49 def self.all subscriptions = [] num = 1 loop do subs = page(num, 200) break if subs.empty? num += 1 subscriptions += subs end subscriptions end |
.find(id) ⇒ Subscription
Finds a [Subscription] in chargify. This can raise an exception.
41 42 43 |
# File 'lib/charger/subscription.rb', line 41 def self.find id new(client.get("subscriptions/#{id}")['subscription']) end |
.page(num = 1, limit = 20) ⇒ Array<Subscription>
Get all of the subscriptions for a specific page
68 69 70 71 72 73 74 |
# File 'lib/charger/subscription.rb', line 68 def self.page num=1, limit=20 subscriptions = [] client.get("subscriptions", params: {page: num, per_page: limit}).each do |data| subscriptions << new(data['subscription']) end subscriptions end |
Instance Method Details
#activated_between?(a, b) ⇒ Boolean
138 139 140 141 |
# File 'lib/charger/subscription.rb', line 138 def activated_between? a, b return false unless activated? activated_at > a && activated_at < b end |
#activated_on?(date) ⇒ Boolean
133 134 135 136 |
# File 'lib/charger/subscription.rb', line 133 def activated_on? date return false unless activated? activated_between?(date.beginning_of_day, date.end_of_day) end |
#active? ⇒ Boolean
88 89 90 |
# File 'lib/charger/subscription.rb', line 88 def active? state == 'active' end |
#assessing? ⇒ Boolean
84 85 86 |
# File 'lib/charger/subscription.rb', line 84 def assessing? state == 'assessing' end |
#canceled? ⇒ Boolean
112 113 114 |
# File 'lib/charger/subscription.rb', line 112 def canceled? state == 'canceled' end |
#canceled_between?(a, b) ⇒ Boolean
148 149 150 151 |
# File 'lib/charger/subscription.rb', line 148 def canceled_between? a, b return false unless canceled? canceled_at > a && canceled_at < b end |
#canceled_on?(date) ⇒ Boolean
143 144 145 146 |
# File 'lib/charger/subscription.rb', line 143 def canceled_on? date return false unless canceled? canceled_between?(date.beginning_of_day, date.end_of_day) end |
#end_of_life? ⇒ Boolean
108 109 110 |
# File 'lib/charger/subscription.rb', line 108 def end_of_life? %w{canceled expired suspended trial_ended}.include?(state) end |
#events(force = false) ⇒ Object
169 170 171 172 173 174 175 176 |
# File 'lib/charger/subscription.rb', line 169 def events force=false @events = nil if force @events ||= Event.find_by_subscription_id(id) @events.each do |event| event.subscription = self end @events end |
#expired? ⇒ Boolean
116 117 118 |
# File 'lib/charger/subscription.rb', line 116 def expired? state == 'expired' end |
#line_items(force = false) ⇒ Object
179 180 181 182 183 184 185 186 |
# File 'lib/charger/subscription.rb', line 179 def line_items force=false @line_items = nil if force @line_items ||= LineItem.find_by_subscription_id(id) @line_items.each do |item| item.subscription = self end @line_items end |
#live? ⇒ Boolean
76 77 78 |
# File 'lib/charger/subscription.rb', line 76 def live? %w{trialing assessing active}.include?(state) end |
#mrr ⇒ Object
161 162 163 164 165 166 167 |
# File 'lib/charger/subscription.rb', line 161 def mrr if product.interval_unit == 'day' total / (product.interval / 30) else total / product.interval end end |
#past_due? ⇒ Boolean
100 101 102 |
# File 'lib/charger/subscription.rb', line 100 def past_due? state == 'past_due' end |
#persisted? ⇒ Boolean
129 130 131 |
# File 'lib/charger/subscription.rb', line 129 def persisted? !!id end |
#problem? ⇒ Boolean
92 93 94 |
# File 'lib/charger/subscription.rb', line 92 def problem? %w{soft_failure past_due unpaid}.include?(state) end |
#soft_failure? ⇒ Boolean
96 97 98 |
# File 'lib/charger/subscription.rb', line 96 def soft_failure? state == 'soft_failure' end |
#statements(force = false) ⇒ Object
197 198 199 200 201 202 203 204 |
# File 'lib/charger/subscription.rb', line 197 def statements force=false @statements = nil if force @statements ||= Statement.find_by_subscription_id(id) @statements.each do |statement| statement.subscription = self end @statements end |
#suspended? ⇒ Boolean
120 121 122 |
# File 'lib/charger/subscription.rb', line 120 def suspended? state == 'suspended' end |
#total ⇒ Object
153 154 155 156 157 158 159 |
# File 'lib/charger/subscription.rb', line 153 def total sum = product.price_in_cents.to_f / 100.0 line_items.each do |item| sum += item.total if item.allocated? end sum end |
#transactions(force = false) ⇒ Object
188 189 190 191 192 193 194 195 |
# File 'lib/charger/subscription.rb', line 188 def transactions force=false @transactions = nil if force @transactions ||= Transaction.find_by_subscription_id(id) @transactions.each do |transaction| transaction.subscription = self end @transactions end |
#trial_ended? ⇒ Boolean
124 125 126 |
# File 'lib/charger/subscription.rb', line 124 def trial_ended? state == 'trial_ended' end |
#trialing? ⇒ Boolean
80 81 82 |
# File 'lib/charger/subscription.rb', line 80 def trialing? state == 'trialing' end |
#unpaid? ⇒ Boolean
104 105 106 |
# File 'lib/charger/subscription.rb', line 104 def unpaid? state == 'unpaid' end |