Module: Adhocracy::ActsAsGroup::InstanceMethods

Defined in:
lib/adhocracy/acts_as_group.rb

Instance Method Summary collapse

Instance Method Details

#add_member(member) ⇒ Object



40
41
42
43
# File 'lib/adhocracy/acts_as_group.rb', line 40

def add_member(member)
  MembershipAssociation.new(member: member, group: self).
    create_membership
end

#add_officer(member) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
# File 'lib/adhocracy/acts_as_group.rb', line 45

def add_officer(member)
  membership = Adhocracy::Membership.where(member: member, group: self).
    first_or_initialize(officer: true)
  if membership.new_record?
    membership.save
  else
    return false if membership.officer?
    membership.update_column(:officer, true)
  end
  return membership
end

#demote_officer(member) ⇒ Object



57
58
59
60
61
62
# File 'lib/adhocracy/acts_as_group.rb', line 57

def demote_officer(member)
  membership = Adhocracy::Membership.find_by(member: member, group: self)
  return false if !membership.present? || !membership.officer? ||
    membership.is_necessary_officer?
  return membership.update_column(:officer, false)
end

#has_member?(member) ⇒ Boolean

Returns:

  • (Boolean)


74
75
76
# File 'lib/adhocracy/acts_as_group.rb', line 74

def has_member?(member)
  MembershipAssociation.new(member: member, group: self).verify_membership
end

#has_officer?(member) ⇒ Boolean

Returns:

  • (Boolean)


78
79
80
81
# File 'lib/adhocracy/acts_as_group.rb', line 78

def has_officer?(member)
  Adhocracy::Membership.where(member: member, group: self,
    officer: true).exists?
end

#invite_member(member) ⇒ Object



64
65
66
67
# File 'lib/adhocracy/acts_as_group.rb', line 64

def invite_member(member)
  MembershipAssociation.new(member: member, group: self).
    create_membership_invitation
end

#invited?(member, params = {}) ⇒ Boolean

Returns:

  • (Boolean)


83
84
85
86
# File 'lib/adhocracy/acts_as_group.rb', line 83

def invited?(member, params = {})
  params.merge!({ member: member, group: self })
  MembershipAssociation.new(params).verify_membership_invitation
end

#invited_membersObject



30
31
32
33
# File 'lib/adhocracy/acts_as_group.rb', line 30

def invited_members
  MembershipAssociation.new(group: self).
    list_members_for_membership_invitation
end

#membersObject



21
22
23
# File 'lib/adhocracy/acts_as_group.rb', line 21

def members
  MembershipAssociation.new(group: self).list_members_for_membership
end

#membership_requestsObject



35
36
37
38
# File 'lib/adhocracy/acts_as_group.rb', line 35

def membership_requests
  MembershipAssociation.new(group: self).
    list_members_for_membership_request
end

#officersObject



25
26
27
28
# File 'lib/adhocracy/acts_as_group.rb', line 25

def officers
  Adhocracy::Membership.where(group: self, officer: true).
    includes(:member).collect { |membership| membership.member }
end

#recieved_request_from?(member, params = {}) ⇒ Boolean

Returns:

  • (Boolean)


88
89
90
91
# File 'lib/adhocracy/acts_as_group.rb', line 88

def recieved_request_from?(member, params = {})
  params.merge!({ member: member, group: self })
  MembershipAssociation.new(params).verify_membership_request
end

#remove_member(member) ⇒ Object



69
70
71
72
# File 'lib/adhocracy/acts_as_group.rb', line 69

def remove_member(member)
  MembershipAssociation.new(member: member, group: self).
    destroy_membership
end