class StripeAccount < ActiveRecord::Base
  belongs_to :enterprise
  validates :stripe_user_id, :stripe_publishable_key, presence: true
  validates :enterprise_id, uniqueness: true

  def deauthorize_and_destroy
    accounts = StripeAccount.where(stripe_user_id: stripe_user_id)

    # Only deauthorize the user if it is not linked to multiple accounts
    return destroy if accounts.count > 1

    destroy && Stripe::OAuth.deauthorize(stripe_user_id: stripe_user_id)
  rescue Stripe::OAuth::OAuthError
    Bugsnag.notify(
      RuntimeError.new("StripeDeauthorizeFailure"),
      stripe_account: stripe_user_id,
      enterprise_id: enterprise_id
    )
    true
  end
end
