Sha256: 9b9fb3d4ed726cc6976cd99c7f4e9cafd278768a0adac1a4396eedda9c3134db

Contents?: true

Size: 1.88 KB

Versions: 2

Compression:

Stored size: 1.88 KB

Contents

require 'stripe'
require 'aptible/billforward'

module Aptible
  module Auth
    class Organization < Resource
      has_many :roles
      has_many :users
      has_many :invitations
      belongs_to :security_officer
      belongs_to :billing_contact

      field :id
      field :name
      field :handle
      field :created_at, type: Time
      field :updated_at, type: Time
      field :primary_phone
      field :emergency_phone
      field :city
      field :state
      field :zip
      field :address
      field :stripe_customer_id
      field :stripe_subscription_id
      field :stripe_subscription_status
      field :plan
      field :security_alert_email
      field :ops_alert_email
      field :security_officer_id
      field :billing_contact_id
      field :billforward_account_id

      def billforward_account
        return nil if billforward_account_id.nil?
        @billforward_account ||= Aptible::BillForward::Account.find(
          billforward_account_id
        )
      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

      def privileged_roles
        roles.select(&:privileged?)
      end

      def accounts
        return @accounts if @accounts
        require 'aptible/api'

        accounts = Aptible::Api::Account.all(token: token, headers: headers)
        @accounts = accounts.select do |account|
          (link = account.links[:organization]) && link.href == href
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
aptible-auth-0.8.8 lib/aptible/auth/organization.rb
aptible-auth-0.8.7 lib/aptible/auth/organization.rb