Class: Effective::Customer
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Effective::Customer
- Defined in:
- app/models/effective/customer.rb
Instance Attribute Summary collapse
-
#stripe_customer ⇒ Object
Returns the value of attribute stripe_customer.
Class Method Summary collapse
Instance Method Summary collapse
- #active? ⇒ Boolean
- #create_stripe_customer! ⇒ Object
- #email ⇒ Object
- #invoices ⇒ Object
- #past_due? ⇒ Boolean
- #payment_status ⇒ Object
- #to_s ⇒ Object
- #token_required? ⇒ Boolean
- #upcoming_invoice ⇒ Object
Instance Attribute Details
#stripe_customer ⇒ Object
Returns the value of attribute stripe_customer.
5 6 7 |
# File 'app/models/effective/customer.rb', line 5 def stripe_customer @stripe_customer end |
Class Method Details
Instance Method Details
#active? ⇒ Boolean
76 77 78 |
# File 'app/models/effective/customer.rb', line 76 def active? subscriptions.present? && subscriptions.all? { |subscription| subscription.active? } end |
#create_stripe_customer! ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 |
# File 'app/models/effective/customer.rb', line 35 def create_stripe_customer! return if stripe_customer.present? raise('expected a user') unless user.present? Rails.logger.info "[STRIPE] create customer: #{user.email}" self.stripe_customer = Stripe::Customer.create(email: user.email, description: user.to_s, metadata: { user_id: user.id }) self.stripe_customer_id = stripe_customer.id save! end |
#email ⇒ Object
31 32 33 |
# File 'app/models/effective/customer.rb', line 31 def email user.email if user end |
#invoices ⇒ Object
54 55 56 57 58 59 |
# File 'app/models/effective/customer.rb', line 54 def invoices @invoices ||= if stripe_customer_id.present? Rails.logger.info "[STRIPE] list invoices: #{stripe_customer_id}" ::Stripe::Invoice.list(customer: stripe_customer_id) rescue nil end end |
#past_due? ⇒ Boolean
72 73 74 |
# File 'app/models/effective/customer.rb', line 72 def past_due? subscriptions.any? { |subscription| subscription.past_due? } end |
#payment_status ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 |
# File 'app/models/effective/customer.rb', line 80 def payment_status if past_due? 'We ran into an error processing your last payment. Please update or confirm your card details to continue.' elsif active? "Your payment is in good standing. Thanks so much for your support!" elsif active_card.blank? 'No credit card on file. Please add a card.' else 'Please update or confirm your card details to continue.' end.html_safe end |
#to_s ⇒ Object
27 28 29 |
# File 'app/models/effective/customer.rb', line 27 def to_s user.to_s.presence || 'New Customer' end |
#token_required? ⇒ Boolean
68 69 70 |
# File 'app/models/effective/customer.rb', line 68 def token_required? active_card.blank? || past_due? end |
#upcoming_invoice ⇒ Object
61 62 63 64 65 66 |
# File 'app/models/effective/customer.rb', line 61 def upcoming_invoice @upcoming_invoice ||= if stripe_customer_id.present? Rails.logger.info "[STRIPE] get upcoming invoice: #{stripe_customer_id}" ::Stripe::Invoice.upcoming(customer: stripe_customer_id) rescue nil end end |