Module: GroupContact

Defined in:
lib/zm/client/contact/mod_group_contact.rb

Instance Method Summary collapse

Instance Method Details

#add_contacts(contacts) ⇒ Object



23
24
25
26
27
# File 'lib/zm/client/contact/mod_group_contact.rb', line 23

def add_contacts(contacts)
  contacts = [contacts] unless contacts.is_a?(Array)
  new_members = contacts.map { |c| add_member_by_value(c.id) }
  add_members(new_members)
end

#add_member_by_value(value) ⇒ Object



41
42
43
# File 'lib/zm/client/contact/mod_group_contact.rb', line 41

def add_member_by_value(value)
  @members << Zm::Client::ConcatMember.init_by_value(value)
end

#add_members(new_members) ⇒ Object



29
30
31
32
# File 'lib/zm/client/contact/mod_group_contact.rb', line 29

def add_members(new_members)
  new_members = [new_members] unless new_members.is_a?(Array)
  @members += new_members
end

#add_members_by_values(member_values) ⇒ Object



34
35
36
37
38
39
# File 'lib/zm/client/contact/mod_group_contact.rb', line 34

def add_members_by_values(member_values)
  member_values = [member_values] unless member_values.is_a?(Array)
  current_member_values = @members.map(&:value)
  member_values.reject! { |value| current_member_values.include?(value) }
  member_values.each { |value| add_member_by_value(value) }
end

#construct_soap_attrsObject



19
20
21
# File 'lib/zm/client/contact/mod_group_contact.rb', line 19

def construct_soap_attrs
  [[:nickname, @name], [:fullname, @name], [:fileAs, "8:#{@name}"], %i[type group]]
end

#construct_soap_node_membersObject



65
66
67
68
69
70
71
72
73
# File 'lib/zm/client/contact/mod_group_contact.rb', line 65

def construct_soap_node_members
  if recorded?
    (old_members - @members).each(&:remove!)
    (@members - old_members).each(&:add!)
    (old_members + @members).uniq.reject { |m| m.op.nil? }.map(&:construct_soap_node)
  else
    @members.map(&:construct_soap_node)
  end
end

#create!Object



10
11
12
13
# File 'lib/zm/client/contact/mod_group_contact.rb', line 10

def create!
  rep = @parent.sacc.create_group_contact(@parent.token, l, construct_soap_attrs, construct_soap_node_members)
  init_from_json(rep[:Body][:CreateContactResponse][:cn].first)
end

#del_members_by_values(member_values) ⇒ Object



50
51
52
53
# File 'lib/zm/client/contact/mod_group_contact.rb', line 50

def del_members_by_values(member_values)
  member_values = [member_values] unless member_values.is_a?(Array)
  @members.delete_if { |m| member_values.include?(m.value) }
end

#delete_members(del_members) ⇒ Object



45
46
47
48
# File 'lib/zm/client/contact/mod_group_contact.rb', line 45

def delete_members(del_members)
  del_members = [del_members] unless del_members.is_a?(Array)
  @members -= del_members
end

#has_ldap_members?Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/zm/client/contact/mod_group_contact.rb', line 61

def has_ldap_members?
  ldap_members.any?
end

#init_members_from_json(m) ⇒ Object



4
5
6
7
8
# File 'lib/zm/client/contact/mod_group_contact.rb', line 4

def init_members_from_json(m)
  return if m.nil?

  @members = m.map { |m| Zm::Client::ConcatMember.new(m[:type], m[:value]) }
end

#ldap_membersObject



55
56
57
58
59
# File 'lib/zm/client/contact/mod_group_contact.rb', line 55

def ldap_members
  return [] if @members.nil?

  @members.select(&:ldap?)
end

#modify!Object



15
16
17
# File 'lib/zm/client/contact/mod_group_contact.rb', line 15

def modify!
  @parent.sacc.modify_group_contact(@parent.token, id, construct_soap_attrs, construct_soap_node_members)
end