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



78
79
80
81
82
83
84
85
86
87
# File 'app/models/openstax/accounts/group.rb', line 78

def add_member()
  return unless .is_a? OpenStax::Accounts::Account
  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



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

def add_owner()
  return unless .is_a? OpenStax::Accounts::Account
  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)


54
55
56
57
58
59
60
# File 'app/models/openstax/accounts/group.rb', line 54

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

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

#has_member?(account) ⇒ Boolean

Returns:

  • (Boolean)


62
63
64
65
# File 'app/models/openstax/accounts/group.rb', line 62

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

#has_owner?(account) ⇒ Boolean

Returns:

  • (Boolean)


46
47
48
49
50
51
52
# File 'app/models/openstax/accounts/group.rb', line 46

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

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

#subtree_group_idsObject



103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'app/models/openstax/accounts/group.rb', line 103

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

  gids = [openstax_uid] + Group.includes(:container_group_nesting)
                               .where(container_group_nesting: {
                                        container_group_id: openstax_uid
                                      })
                               .collect{|g| g.subtree_group_ids}.flatten
  update_column(:cached_subtree_group_ids, gids)
  self.cached_subtree_group_ids = gids
end

#supertree_group_idsObject



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

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

  gids = [openstax_uid] + (Group.includes(:member_group_nestings)
                                .where(member_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