Class: OpenStax::Accounts::Group

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/openstax/accounts/group.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#requestorObject

Returns the value of attribute requestor.



7
8
9
# File 'app/models/openstax/accounts/group.rb', line 7

def requestor
  @requestor
end

#syncingObject

Returns the value of attribute syncing.



7
8
9
# File 'app/models/openstax/accounts/group.rb', line 7

def syncing
  @syncing
end

Instance Method Details

#add_member(account) ⇒ Object



101
102
103
104
105
106
107
108
109
110
# File 'app/models/openstax/accounts/group.rb', line 101

def add_member()
  return unless .is_a? OpenStax::Accounts::
  gm = GroupMember.new
  gm.group = self
  gm.user = 
  return unless gm.valid?
  gm.save if persisted?
  group_members << gm
  gm
end

#add_owner(account) ⇒ Object



90
91
92
93
94
95
96
97
98
99
# File 'app/models/openstax/accounts/group.rb', line 90

def add_owner()
  return unless .is_a? OpenStax::Accounts::
  go = GroupOwner.new
  go.group = self
  go.user = 
  return unless go.valid?
  go.save if persisted?
  group_owners << go
  go
end

#has_direct_member?(account) ⇒ Boolean

Returns:

  • (Boolean)


77
78
79
80
81
82
83
# File 'app/models/openstax/accounts/group.rb', line 77

def has_direct_member?()
  return false unless .is_a? OpenStax::Accounts::

  gms = group_members
  gms = gms.preload(:user) if persisted?
  gms.any?{ |gm| gm.user ==  }
end

#has_member?(account) ⇒ Boolean

Returns:

  • (Boolean)


85
86
87
88
# File 'app/models/openstax/accounts/group.rb', line 85

def has_member?()
  return false unless .is_a? OpenStax::Accounts::
  !.group_members.where(group_id: subtree_group_ids).first.nil?
end

#has_owner?(account) ⇒ Boolean

Returns:

  • (Boolean)


69
70
71
72
73
74
75
# File 'app/models/openstax/accounts/group.rb', line 69

def has_owner?()
  return false unless .is_a? OpenStax::Accounts::

  gos = group_owners
  gos = gos.preload(:user) if persisted?
  gos.any?{ |go| go.user ==  }
end

#subtree_group_idsObject



127
128
129
130
131
132
133
134
135
136
137
138
# File 'app/models/openstax/accounts/group.rb', line 127

def subtree_group_ids
  return cached_subtree_group_ids unless cached_subtree_group_ids.nil?
  return [] unless persisted?
  reload

  gids = [openstax_uid] +
    self.class.joins(:container_group_nesting)
              .where(openstax_accounts_group_nestings: { container_group_id: openstax_uid })
              .map { |group| group.subtree_group_ids }.flatten
  update_column(:cached_subtree_group_ids, gids)
  self.cached_subtree_group_ids = gids
end

#supertree_group_idsObject



112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'app/models/openstax/accounts/group.rb', line 112

def supertree_group_ids
  return cached_supertree_group_ids unless cached_supertree_group_ids.nil?
  return [] unless persisted?
  reload

  gids = [openstax_uid] + (
    self.class.joins(:member_group_nestings)
              .where(openstax_accounts_group_nestings: { member_group_id: openstax_uid })
              .first
              .try!(:supertree_group_ids) || []
  )
  update_column(:cached_supertree_group_ids, gids)
  self.cached_supertree_group_ids = gids
end