Sha256: bb836eaada069a09329de4c0452e8030332e67dcf2d89def1e76582a0b0d5b66

Contents?: true

Size: 1.21 KB

Versions: 4

Compression:

Stored size: 1.21 KB

Contents

require 'stripe'

module Aptible
  module Billing
    class BillingDetail < Resource
      field :id
      field :created_at, type: Time
      field :updated_at, type: Time
      field :stripe_customer_id
      field :stripe_subscription_id
      field :stripe_subscription_status
      field :plan

      def organization
        Aptible::Auth::Organization.find_by_url(
          links['organization'].href,
          token: token,
          headers: headers)
      rescue
        nil
      end

      def billing_contact
        Aptible::Auth::User.find_by_url(
          links['billing_contact'].href,
          token: token,
          headers: headers)
      rescue
        nil
      end

      def stripe_customer
        return nil if stripe_customer_id.nil?
        @stripe_customer ||= Stripe::Customer.retrieve(stripe_customer_id)
      end

      def can_manage_compliance?
        %w(production pilot).include?(plan)
      end

      def subscription
        return nil if stripe_subscription_id.nil?
        subscriptions = stripe_customer.subscriptions
        @subscription ||= subscriptions.retrieve(stripe_subscription_id)
      end

      def subscribed?
        !!stripe_subscription_id
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
aptible-billing-0.1.5 lib/aptible/billing/billing_detail.rb
aptible-billing-0.1.4 lib/aptible/billing/billing_detail.rb
aptible-billing-0.1.3 lib/aptible/billing/billing_detail.rb
aptible-billing-0.1.2 lib/aptible/billing/billing_detail.rb