Sha256: e89665516a8736807b9d26af74b353eead62bdec09947d583f01c6adb6d6a91c

Contents?: true

Size: 1.92 KB

Versions: 23

Compression:

Stored size: 1.92 KB

Contents

module Teams::Base
  extend ActiveSupport::Concern

  included do
    # super scaffolding
    unless scaffolding_things_disabled?
      has_many :scaffolding_absolutely_abstract_creative_concepts, class_name: "Scaffolding::AbsolutelyAbstract::CreativeConcept", dependent: :destroy, enable_cable_ready_updates: true
    end

    # added_by_id is a foreign_key to other Memberships on the same team,
    # so we nullify this to remove the constraint to delete the team.
    before_destroy { Membership.where(team: self).update_all(added_by_id: nil) }

    # memberships and invitations
    has_many :memberships, dependent: :destroy
    has_many :users, through: :memberships
    has_many :invitations

    # oauth for grape api
    has_many :platform_applications, class_name: "Platform::Application", dependent: :destroy, foreign_key: :team_id

    # integrations
    has_many :integrations_stripe_installations, class_name: "Integrations::StripeInstallation", dependent: :destroy if stripe_enabled?

    # validations
    validates :name, presence: true
    validates :time_zone, inclusion: {in: ActiveSupport::TimeZone.all.map(&:name)}, allow_nil: true
  end

  def platform_agent_access_tokens
    Platform::AccessToken.joins(:application).where(resource_owner_id: users.where.not(platform_agent_of_id: nil), application: {team: nil})
  end

  def admins
    memberships.current_and_invited.admins
  end

  def admin_users
    admins.map(&:user).compact
  end

  def primary_contact
    admin_users.min { |user| user.created_at }
  end

  def formatted_email_address
    primary_contact.email
  end

  def invalidate_caches
    users.map(&:invalidate_ability_cache)
  end

  def team
    # some generic features appeal to the `team` method for security or scoping purposes, but sometimes those same
    # generic functions need to function for a team model as well, so we do this.
    self
  end

  ActiveSupport.run_load_hooks :bullet_train_teams_base, self
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
bullet_train-1.6.19 app/models/concerns/teams/base.rb
bullet_train-1.6.18 app/models/concerns/teams/base.rb
bullet_train-1.6.17 app/models/concerns/teams/base.rb
bullet_train-1.6.16 app/models/concerns/teams/base.rb
bullet_train-1.6.15 app/models/concerns/teams/base.rb
bullet_train-1.6.14 app/models/concerns/teams/base.rb
bullet_train-1.6.13 app/models/concerns/teams/base.rb
bullet_train-1.6.12 app/models/concerns/teams/base.rb
bullet_train-1.6.11 app/models/concerns/teams/base.rb
bullet_train-1.6.10 app/models/concerns/teams/base.rb
bullet_train-1.6.9 app/models/concerns/teams/base.rb
bullet_train-1.6.8 app/models/concerns/teams/base.rb
bullet_train-1.6.7 app/models/concerns/teams/base.rb
bullet_train-1.6.6 app/models/concerns/teams/base.rb
bullet_train-1.6.5 app/models/concerns/teams/base.rb
bullet_train-1.6.4 app/models/concerns/teams/base.rb
bullet_train-1.6.3 app/models/concerns/teams/base.rb
bullet_train-1.6.2 app/models/concerns/teams/base.rb
bullet_train-1.6.1 app/models/concerns/teams/base.rb
bullet_train-1.6.0 app/models/concerns/teams/base.rb