module ActsAsSubscribable
def subscribable_buyer
def subscribable_buyer raise 'acts_as_subscribable object requires the subscribable_buyer method be defined to return the User buying this item.' end
def subscribable_quantity_used
def subscribable_quantity_used raise 'acts_as_subscribable object requires the subscribable_quantity_used method be defined to determine how many are in use.' end
def subscribed?(stripe_plan_id = nil)
def subscribed?(stripe_plan_id = nil) return false if subscription_status.blank? stripe_plan_id ? (subscription&.stripe_plan_id == stripe_plan_id) : true end
def subscripter
def subscripter @_effective_subscripter ||= begin Effective::Subscripter.new(subscribable: self, user: subscribable_buyer, quantity: subscription&.quantity, stripe_plan_id: subscription&.stripe_plan_id) end end
def subscription_active?
def subscription_active? subscribed? && subscription_status == EffectiveOrders::ACTIVE end
def subscription_past_due?
def subscription_past_due? subscribed? && subscription_status == EffectiveOrders::PAST_DUE end
def subscription_trialing?
def subscription_trialing? subscribed? && subscription_status == EffectiveOrders::TRIALING end
def trial_active?
def trial_active? trialing? && trialing_until > Time.zone.now end
def trial_past_due?
def trial_past_due? trialing? && trialing_until < Time.zone.now end
def trialing?
def trialing? subscription_status.blank? end