the-city-admin 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/api/address.rb +51 -0
- data/lib/api/address_list.rb +62 -0
- data/lib/api/api_object.rb +100 -0
- data/lib/api/barcode.rb +43 -0
- data/lib/api/checkin.rb +37 -0
- data/lib/api/checkin_list.rb +62 -0
- data/lib/api/family.rb +47 -0
- data/lib/api/family_member.rb +28 -0
- data/lib/api/group.rb +162 -0
- data/lib/api/group_address.rb +31 -0
- data/lib/api/group_address_list.rb +63 -0
- data/lib/api/group_checkin.rb +36 -0
- data/lib/api/group_checkin_list.rb +63 -0
- data/lib/api/group_event_attendance.rb +28 -0
- data/lib/api/group_event_attendance_list.rb +63 -0
- data/lib/api/group_export.rb +22 -0
- data/lib/api/group_export_list.rb +63 -0
- data/lib/api/group_invitation.rb +26 -0
- data/lib/api/group_invitation_list.rb +63 -0
- data/lib/api/group_list.rb +74 -0
- data/lib/api/group_role.rb +27 -0
- data/lib/api/group_role_list.rb +62 -0
- data/lib/api/group_tag.rb +20 -0
- data/lib/api/group_tag_list.rb +62 -0
- data/lib/api/metric.rb +50 -0
- data/lib/api/metric_list.rb +72 -0
- data/lib/api/metric_measurement.rb +29 -0
- data/lib/api/metric_measurement_list.rb +62 -0
- data/lib/api/role.rb +43 -0
- data/lib/api/role_list.rb +73 -0
- data/lib/api/skill.rb +21 -0
- data/lib/api/skill_list.rb +73 -0
- data/lib/api/skilled_user_id_list.rb +73 -0
- data/lib/api/skilled_user_list.rb +73 -0
- data/lib/api/tag.rb +32 -0
- data/lib/api/tag_group_list.rb +73 -0
- data/lib/api/tag_list.rb +73 -0
- data/lib/api/terminology.rb +32 -0
- data/lib/api/terminology_list.rb +73 -0
- data/lib/api/user.rb +207 -0
- data/lib/api/user_address.rb +31 -0
- data/lib/api/user_address_list.rb +62 -0
- data/lib/api/user_admin_privilege.rb +28 -0
- data/lib/api/user_admin_privilege_list.rb +63 -0
- data/lib/api/user_barcode.rb +20 -0
- data/lib/api/user_count.rb +40 -0
- data/lib/api/user_family_list.rb +71 -0
- data/lib/api/user_family_member.rb +28 -0
- data/lib/api/user_invitation.rb +26 -0
- data/lib/api/user_invitation_list.rb +63 -0
- data/lib/api/user_list.rb +72 -0
- data/lib/api/user_note.rb +31 -0
- data/lib/api/user_note_list.rb +63 -0
- data/lib/api/user_process.rb +21 -0
- data/lib/api/user_process_list.rb +63 -0
- data/lib/api/user_role.rb +34 -0
- data/lib/api/user_role_list.rb +74 -0
- data/lib/api/user_skill.rb +22 -0
- data/lib/api/user_skill_list.rb +74 -0
- data/lib/api/web_hook.rb +34 -0
- data/lib/api/web_hook_list.rb +74 -0
- data/lib/auto_load.rb +23 -0
- data/lib/cachers/cache_adapter.rb +50 -0
- data/lib/cachers/file/json_cache.rb +135 -0
- data/lib/common.rb +124 -0
- data/lib/exceptions.rb +5 -0
- data/lib/readers/address_list_reader.rb +21 -0
- data/lib/readers/address_reader.rb +22 -0
- data/lib/readers/api_reader.rb +28 -0
- data/lib/readers/checkin_list_reader.rb +21 -0
- data/lib/readers/checkin_reader.rb +22 -0
- data/lib/readers/family_reader.rb +21 -0
- data/lib/readers/group_address_list_reader.rb +25 -0
- data/lib/readers/group_checkin_list_reader.rb +25 -0
- data/lib/readers/group_event_attendance_list_reader.rb +25 -0
- data/lib/readers/group_export_list_reader.rb +25 -0
- data/lib/readers/group_invitation_list_reader.rb +23 -0
- data/lib/readers/group_list_reader.rb +25 -0
- data/lib/readers/group_reader.rb +21 -0
- data/lib/readers/group_role_list_reader.rb +23 -0
- data/lib/readers/group_tag_list_reader.rb +23 -0
- data/lib/readers/metric_list_reader.rb +22 -0
- data/lib/readers/metric_measurement_list_reader.rb +21 -0
- data/lib/readers/metric_measurement_reader.rb +22 -0
- data/lib/readers/metric_reader.rb +21 -0
- data/lib/readers/role_list_reader.rb +21 -0
- data/lib/readers/skill_list_reader.rb +21 -0
- data/lib/readers/skilled_user_id_list_reader.rb +22 -0
- data/lib/readers/skilled_user_list_reader.rb +22 -0
- data/lib/readers/tag_group_list_reader.rb +22 -0
- data/lib/readers/tag_list_reader.rb +22 -0
- data/lib/readers/tag_reader.rb +22 -0
- data/lib/readers/terminology_list_reader.rb +22 -0
- data/lib/readers/terminology_reader.rb +22 -0
- data/lib/readers/user_address_list_reader.rb +25 -0
- data/lib/readers/user_admin_privilege_list_reader.rb +23 -0
- data/lib/readers/user_count_reader.rb +32 -0
- data/lib/readers/user_family_list_reader.rb +24 -0
- data/lib/readers/user_invitation_list_reader.rb +23 -0
- data/lib/readers/user_list_reader.rb +25 -0
- data/lib/readers/user_note_list_reader.rb +23 -0
- data/lib/readers/user_process_list_reader.rb +23 -0
- data/lib/readers/user_reader.rb +24 -0
- data/lib/readers/user_role_list_reader.rb +23 -0
- data/lib/readers/user_skill_list_reader.rb +23 -0
- data/lib/readers/web_hook_list_reader.rb +21 -0
- data/lib/the_city_admin.rb +82 -0
- data/lib/writers/api_writer.rb +54 -0
- data/lib/writers/family_writer.rb +25 -0
- data/lib/writers/group_address_writer.rb +32 -0
- data/lib/writers/group_writer.rb +25 -0
- data/lib/writers/metric_measurement_writer.rb +25 -0
- data/lib/writers/metric_writer.rb +29 -0
- data/lib/writers/skill_writer.rb +25 -0
- data/lib/writers/tag_writer.rb +27 -0
- data/lib/writers/terminology_writer.rb +19 -0
- data/lib/writers/user_address_writer.rb +32 -0
- data/lib/writers/user_admin_privilege_writer.rb +24 -0
- data/lib/writers/user_invitation_writer.rb +23 -0
- data/lib/writers/user_note_writer.rb +25 -0
- data/lib/writers/user_role_writer.rb +28 -0
- data/lib/writers/user_skill_writer.rb +23 -0
- data/lib/writers/user_writer.rb +46 -0
- data/lib/writers/web_hook_writer.rb +20 -0
- metadata +184 -0
data/lib/api/address.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
module TheCity
|
2
|
+
|
3
|
+
class Address < ApiObject
|
4
|
+
|
5
|
+
tc_attr_accessor :city,
|
6
|
+
:created_at,
|
7
|
+
:id,
|
8
|
+
:latitude,
|
9
|
+
:location_type,
|
10
|
+
:longitude,
|
11
|
+
:privacy,
|
12
|
+
:state,
|
13
|
+
:street,
|
14
|
+
:updated_at,
|
15
|
+
:group_id,
|
16
|
+
:zipcode
|
17
|
+
|
18
|
+
|
19
|
+
# Loads the address by the specified ID.
|
20
|
+
#
|
21
|
+
# @param address_id The ID of the address to load.
|
22
|
+
#
|
23
|
+
# Returns a new {Address} object.
|
24
|
+
def self.load_by_id(address_id)
|
25
|
+
reader = AddressReader.new(address_id)
|
26
|
+
self.new(reader.load_feed)
|
27
|
+
rescue
|
28
|
+
nil
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
# Constructor.
|
33
|
+
#
|
34
|
+
# @param json_data (optional) JSON data of the address.
|
35
|
+
def initialize(json_data = nil)
|
36
|
+
initialize_from_json_object(json_data) unless json_data.nil?
|
37
|
+
end
|
38
|
+
|
39
|
+
def save
|
40
|
+
raise 'Address does not have a save method'
|
41
|
+
end
|
42
|
+
|
43
|
+
def delete
|
44
|
+
raise 'Address does not have a delete method'
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module TheCity
|
2
|
+
|
3
|
+
class AddressList
|
4
|
+
|
5
|
+
include Enumerable
|
6
|
+
|
7
|
+
attr_reader :total_entries, :total_pages, :per_page, :current_page
|
8
|
+
|
9
|
+
# Constructor.
|
10
|
+
#
|
11
|
+
# @param options A hash of options for loading the list.
|
12
|
+
#
|
13
|
+
# Options:
|
14
|
+
# :page - The page number to get.
|
15
|
+
# :reader - The Reader to use to load the data.
|
16
|
+
#
|
17
|
+
#
|
18
|
+
# Examples:
|
19
|
+
# AddressList.new
|
20
|
+
#
|
21
|
+
# AddressList.new({:page => 2})
|
22
|
+
#
|
23
|
+
def initialize(options = {})
|
24
|
+
reader = options[:reader] || TheCity::AddressListReader.new(options)
|
25
|
+
@json_data = reader.load_feed
|
26
|
+
|
27
|
+
@total_entries = @json_data['total_entries']
|
28
|
+
@total_pages = @json_data['total_pages']
|
29
|
+
@per_page = @json_data['per_page']
|
30
|
+
@current_page = @json_data['current_page']
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
# Get the specified note.
|
35
|
+
#
|
36
|
+
# @param index The index of the note to get.
|
37
|
+
#
|
38
|
+
# @return [Address]
|
39
|
+
def [](index)
|
40
|
+
Address.new( @json_data['addresses'][index] ) if @json_data['addresses'][index]
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
# This method is needed for Enumerable.
|
45
|
+
def each &block
|
46
|
+
@json_data['addresses'].each{ |address| yield( Address.new(address) )}
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
# Alias the count method
|
51
|
+
alias :size :count
|
52
|
+
|
53
|
+
# Checks if the list is empty.
|
54
|
+
#
|
55
|
+
# @return True on empty, false otherwise.
|
56
|
+
def empty?
|
57
|
+
@json_data['addresses'].empty?
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
module TheCity
|
2
|
+
|
3
|
+
# This class is the base class for all TheCity objects and is meant to be inherited.
|
4
|
+
#
|
5
|
+
class ApiObject
|
6
|
+
attr_reader :error_messages, :marked_for_destruction
|
7
|
+
|
8
|
+
|
9
|
+
# Used to specify a list of getters and setters.
|
10
|
+
def self.tc_attr_accessor(*vars)
|
11
|
+
@__tc_attributes ||= []
|
12
|
+
@__tc_attributes.concat(vars)
|
13
|
+
attr_accessor(*vars)
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
# A list of tc_attr_accessors that have been specified.
|
18
|
+
def self.__tc_attributes
|
19
|
+
@__tc_attributes
|
20
|
+
end
|
21
|
+
|
22
|
+
# Initializes the current object from the JSON data that was loaded into the Hash
|
23
|
+
#
|
24
|
+
# @param object_attributes A Hash of values to load into the current object.
|
25
|
+
def initialize_from_json_object(object_attributes)
|
26
|
+
if object_attributes.is_a?( Hash )
|
27
|
+
object_attributes.each do |key, value|
|
28
|
+
method_to_call = "#{key.to_s.downcase.gsub(' ', '_')}="
|
29
|
+
if respond_to?(method_to_call)
|
30
|
+
self.send(method_to_call, value)
|
31
|
+
else
|
32
|
+
# puts method_to_call # Show the missing methods
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
# Returns the status of the current object.
|
40
|
+
def is_deleted?
|
41
|
+
@_deleted ||= false
|
42
|
+
end
|
43
|
+
|
44
|
+
# Gets the current object's attributes in a Hash.
|
45
|
+
#
|
46
|
+
# @return A hash of all the attributes.
|
47
|
+
def to_attributes
|
48
|
+
vals = {}
|
49
|
+
vals = {:marked_for_destruction => self.is_deleted?} if self.is_deleted?
|
50
|
+
self.class.__tc_attributes.each do |tca|
|
51
|
+
rep = self.send(tca)
|
52
|
+
if rep.class == Array
|
53
|
+
rep.collect! { |r| r.respond_to?(:to_attributes) ? r.to_attributes : r }
|
54
|
+
end
|
55
|
+
vals[tca] = rep
|
56
|
+
end
|
57
|
+
vals
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
# Sets the current object's attributes from a hash
|
62
|
+
def set_attributes(attribute_data)
|
63
|
+
attribute_data.each { |key, value| self.send("#{key}=", value) if self.respond_to?("#{key}=") }
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
# Save this object.
|
68
|
+
#
|
69
|
+
# @return True on success, otherwise false.
|
70
|
+
def save
|
71
|
+
writer = @writer_object.new(self.to_attributes)
|
72
|
+
result = writer.save_object
|
73
|
+
if result === false
|
74
|
+
@error_messages = writer.error_messages
|
75
|
+
else
|
76
|
+
self.set_attributes(result)
|
77
|
+
end
|
78
|
+
result === false ? false : true
|
79
|
+
end
|
80
|
+
|
81
|
+
|
82
|
+
# Delete this object.
|
83
|
+
#
|
84
|
+
# @return True on success, otherwise false.
|
85
|
+
def delete
|
86
|
+
writer = @writer_object.new(self.to_attributes)
|
87
|
+
result = writer.delete_object
|
88
|
+
if result === false
|
89
|
+
@error_messages = writer.error_messages
|
90
|
+
else
|
91
|
+
@_deleted = true
|
92
|
+
end
|
93
|
+
result === false ? false : true
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
|
data/lib/api/barcode.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
module TheCity
|
2
|
+
|
3
|
+
class Barcode < ApiObject
|
4
|
+
|
5
|
+
tc_attr_accessor :user_id,
|
6
|
+
:user_name,
|
7
|
+
:id,
|
8
|
+
:created_at,
|
9
|
+
:barcode
|
10
|
+
|
11
|
+
# Loads the barocde by the specified ID.
|
12
|
+
#
|
13
|
+
# @param barcode_id The ID of the barcode to load.
|
14
|
+
#
|
15
|
+
# Returns a new {Barcode} object.
|
16
|
+
def self.load_by_id(barcode_id)
|
17
|
+
reader = BarcodeReader.new(barcode_id)
|
18
|
+
self.new(reader.load_feed)
|
19
|
+
rescue
|
20
|
+
nil
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
# Constructor.
|
25
|
+
#
|
26
|
+
# @param json_data (optional) JSON data of the barcode.
|
27
|
+
def initialize(json_data = nil)
|
28
|
+
initialize_from_json_object(json_data) unless json_data.nil?
|
29
|
+
end
|
30
|
+
|
31
|
+
def save
|
32
|
+
raise 'Barcode does not have a save method'
|
33
|
+
end
|
34
|
+
|
35
|
+
def delete
|
36
|
+
raise 'Barcode does not have a delete method'
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
|
data/lib/api/checkin.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
module TheCity
|
2
|
+
|
3
|
+
class Checkin < ApiObject
|
4
|
+
|
5
|
+
tc_attr_accessor :group,
|
6
|
+
:checked_out_by_user,
|
7
|
+
:special_instructions,
|
8
|
+
:parent_group_name,
|
9
|
+
:callboard_number,
|
10
|
+
:checked_in_at,
|
11
|
+
:barcode,
|
12
|
+
:checked_in_user,
|
13
|
+
:checked_in_user_id,
|
14
|
+
:id,
|
15
|
+
:checked_in_by_user,
|
16
|
+
:checked_in_by_user_id,
|
17
|
+
:parent_receipt_barcode,
|
18
|
+
:event,
|
19
|
+
:checked_in_user_notes,
|
20
|
+
:checked_out_at,
|
21
|
+
:parent_group_id,
|
22
|
+
:pager_number
|
23
|
+
|
24
|
+
|
25
|
+
# Constructor.
|
26
|
+
#
|
27
|
+
# @param json_data (optional) JSON data of the Checkin.
|
28
|
+
def initialize(json_data = nil)
|
29
|
+
@writer_object = CheckinWriter
|
30
|
+
initialize_from_json_object(json_data) unless json_data.nil?
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module TheCity
|
2
|
+
|
3
|
+
class CheckinList
|
4
|
+
|
5
|
+
include Enumerable
|
6
|
+
|
7
|
+
attr_reader :total_entries, :total_pages, :per_page, :current_page
|
8
|
+
|
9
|
+
# Constructor.
|
10
|
+
#
|
11
|
+
# @param options A hash of options for loading the list.
|
12
|
+
#
|
13
|
+
# Options:
|
14
|
+
# :page - The page number to get.
|
15
|
+
# :reader - The Reader to use to load the data.
|
16
|
+
#
|
17
|
+
#
|
18
|
+
# Examples:
|
19
|
+
# CheckinList.new
|
20
|
+
#
|
21
|
+
# CheckinList.new({:page => 2})
|
22
|
+
#
|
23
|
+
def initialize(options = {})
|
24
|
+
reader = options[:reader] || TheCity::CheckinListReader.new(options)
|
25
|
+
@json_data = reader.load_feed
|
26
|
+
|
27
|
+
@total_entries = @json_data['total_entries']
|
28
|
+
@total_pages = @json_data['total_pages']
|
29
|
+
@per_page = @json_data['per_page']
|
30
|
+
@current_page = @json_data['current_page']
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
# Get the specified note.
|
35
|
+
#
|
36
|
+
# @param index The index of the checkin to get.
|
37
|
+
#
|
38
|
+
# @return [Checkin]
|
39
|
+
def [](index)
|
40
|
+
Checkin.new( @json_data['checkins'][index] ) if @json_data['checkins'][index]
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
# This method is needed for Enumerable.
|
45
|
+
def each &block
|
46
|
+
@json_data['checkins'].each{ |checkin| yield( Checkin.new(checkin) )}
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
# Alias the count method
|
51
|
+
alias :size :count
|
52
|
+
|
53
|
+
# Checks if the list is empty.
|
54
|
+
#
|
55
|
+
# @return True on empty, false otherwise.
|
56
|
+
def empty?
|
57
|
+
@json_data['checkins'].empty?
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
data/lib/api/family.rb
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
module TheCity
|
2
|
+
|
3
|
+
class Family < ApiObject
|
4
|
+
|
5
|
+
tc_attr_accessor :id,
|
6
|
+
:external_id,
|
7
|
+
:created_at,
|
8
|
+
:family_members
|
9
|
+
|
10
|
+
|
11
|
+
# Loads the family by the specified ID.
|
12
|
+
#
|
13
|
+
# @param family_id The ID of the family to load.
|
14
|
+
#
|
15
|
+
# Returns a new {Family} object.
|
16
|
+
def self.load_by_id(family_id)
|
17
|
+
reader = FamilyReader.new(family_id)
|
18
|
+
self.new(reader.load_feed)
|
19
|
+
rescue
|
20
|
+
nil
|
21
|
+
end
|
22
|
+
|
23
|
+
# Constructor.
|
24
|
+
#
|
25
|
+
# @param json_data (optional) JSON data of the Family.
|
26
|
+
def initialize(json_data = nil)
|
27
|
+
@family_members = []
|
28
|
+
@writer_object = FamilyWriter
|
29
|
+
initialize_from_json_object(json_data) unless json_data.nil?
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
# Alias family_members
|
34
|
+
def members
|
35
|
+
@family_members
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
def add_family_member(member)
|
40
|
+
@family_members << member
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module TheCity
|
2
|
+
|
3
|
+
class FamilyMember < ApiObject
|
4
|
+
|
5
|
+
Roles = {:spouse => 'Spouse', :child => 'Child', :temp_child => 'TempChild', :legal_child => 'LegalChild'}
|
6
|
+
|
7
|
+
tc_attr_accessor :name,
|
8
|
+
:admin_url,
|
9
|
+
:external_id_1,
|
10
|
+
:birthdate,
|
11
|
+
:user_id,
|
12
|
+
:barcodes,
|
13
|
+
:family_role,
|
14
|
+
:api_url,
|
15
|
+
:active,
|
16
|
+
:email
|
17
|
+
|
18
|
+
# Constructor.
|
19
|
+
#
|
20
|
+
# @param json_data (optional) JSON data of the Family member.
|
21
|
+
def initialize(json_data = nil)
|
22
|
+
initialize_from_json_object(json_data) unless json_data.nil?
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
|
data/lib/api/group.rb
ADDED
@@ -0,0 +1,162 @@
|
|
1
|
+
module TheCity
|
2
|
+
|
3
|
+
class Group < ApiObject
|
4
|
+
tc_attr_accessor :admin_url,
|
5
|
+
:api_url,
|
6
|
+
:created_at,
|
7
|
+
:external_description,
|
8
|
+
:group_type,
|
9
|
+
:id,
|
10
|
+
:internal_url,
|
11
|
+
:name,
|
12
|
+
:nickname,
|
13
|
+
:parent_id,
|
14
|
+
:plaza_url,
|
15
|
+
:smart_large_profile_pic,
|
16
|
+
:started_as_seed
|
17
|
+
|
18
|
+
|
19
|
+
# Loads the group by the specified ID.
|
20
|
+
#
|
21
|
+
# @param group_id The ID of the group to load.
|
22
|
+
#
|
23
|
+
# Returns a new {Group} object.
|
24
|
+
def self.load_group_by_id(group_id)
|
25
|
+
group_reader = GroupReader.new(group_id)
|
26
|
+
self.new(group_reader)
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
# Constructor.
|
32
|
+
#
|
33
|
+
# @param reader (optional) The object that has the data. This can be a {GroupReader} or Hash object.
|
34
|
+
def initialize(reader = nil)
|
35
|
+
if reader.is_a?(GroupReader)
|
36
|
+
initialize_from_json_object(reader.load_feed)
|
37
|
+
elsif reader.is_a?(Hash)
|
38
|
+
initialize_from_json_object(reader)
|
39
|
+
end
|
40
|
+
|
41
|
+
@address_list = nil
|
42
|
+
@checkin_list = nil
|
43
|
+
@event_attendance_list = nil
|
44
|
+
@export_list = nil
|
45
|
+
@invitations = nil
|
46
|
+
@role_list = nil
|
47
|
+
@tag_list = nil
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
# The address information.
|
52
|
+
#
|
53
|
+
# @return [GroupAddressList]
|
54
|
+
def addresses(force_reload = false)
|
55
|
+
unless force_reload
|
56
|
+
return @address_list unless @address_list.nil?
|
57
|
+
end
|
58
|
+
return nil unless self.id
|
59
|
+
|
60
|
+
@address_list = GroupAddressList.new({:group_id => self.id})
|
61
|
+
return @address_list
|
62
|
+
end
|
63
|
+
|
64
|
+
|
65
|
+
# The checkin information.
|
66
|
+
#
|
67
|
+
# @return [GroupCheckinList]
|
68
|
+
def checkins(force_reload = false)
|
69
|
+
unless force_reload
|
70
|
+
return @checkin_list unless @checkin_list.nil?
|
71
|
+
end
|
72
|
+
return nil unless self.id
|
73
|
+
|
74
|
+
@checkin_list = GroupCheckinList.new({:group_id => self.id})
|
75
|
+
return @checkin_list
|
76
|
+
end
|
77
|
+
|
78
|
+
|
79
|
+
# The checkin information.
|
80
|
+
#
|
81
|
+
# @return [GroupExportList]
|
82
|
+
def exports(force_reload = false)
|
83
|
+
unless force_reload
|
84
|
+
return @export_list unless @export_list.nil?
|
85
|
+
end
|
86
|
+
return nil unless self.id
|
87
|
+
|
88
|
+
@export_list = GroupExportList.new({:group_id => self.id})
|
89
|
+
return @export_list
|
90
|
+
end
|
91
|
+
|
92
|
+
|
93
|
+
# The checkin information.
|
94
|
+
#
|
95
|
+
# @return [GroupEventAttendanceList]
|
96
|
+
def event_attendances(force_reload = false)
|
97
|
+
unless force_reload
|
98
|
+
return @event_attendance_list unless @event_attendance_list.nil?
|
99
|
+
end
|
100
|
+
return nil unless self.id
|
101
|
+
|
102
|
+
@event_attendance_list = GroupEventAttendanceList.new({:group_id => self.id})
|
103
|
+
return @event_attendance_list
|
104
|
+
end
|
105
|
+
|
106
|
+
|
107
|
+
# The invitations for this group.
|
108
|
+
#
|
109
|
+
# @return [GroupInvitationList]
|
110
|
+
def invitations(force_reload = false)
|
111
|
+
unless force_reload
|
112
|
+
return @invitation_list unless @invitation_list.nil?
|
113
|
+
end
|
114
|
+
return nil unless self.id
|
115
|
+
|
116
|
+
@invitation_list = GroupInvitationList.new({:group_id => self.id})
|
117
|
+
return @invitation_list
|
118
|
+
end
|
119
|
+
|
120
|
+
|
121
|
+
# The roles for this group.
|
122
|
+
#
|
123
|
+
# @return [GroupRoleList]
|
124
|
+
def roles(force_reload = false)
|
125
|
+
unless force_reload
|
126
|
+
return @role_list unless @role_list.nil?
|
127
|
+
end
|
128
|
+
return nil unless self.id
|
129
|
+
|
130
|
+
@role_list = GroupRoleList.new({:group_id => self.id})
|
131
|
+
return @role_list
|
132
|
+
end
|
133
|
+
|
134
|
+
|
135
|
+
# The tags for this group.
|
136
|
+
#
|
137
|
+
# @return [GroupTagList]
|
138
|
+
def tags(force_reload = false)
|
139
|
+
unless force_reload
|
140
|
+
return @tag_list unless @tag_list.nil?
|
141
|
+
end
|
142
|
+
return nil unless self.id
|
143
|
+
|
144
|
+
@tag_list = GroupTagList.new({:group_id => self.id})
|
145
|
+
return @tag_list
|
146
|
+
end
|
147
|
+
|
148
|
+
|
149
|
+
|
150
|
+
# Save this object.
|
151
|
+
#
|
152
|
+
# @return True on success, otherwise false.
|
153
|
+
def save
|
154
|
+
writer = GroupWriter.new(self.to_attributes)
|
155
|
+
writer.save_feed
|
156
|
+
end
|
157
|
+
|
158
|
+
end
|
159
|
+
|
160
|
+
end
|
161
|
+
|
162
|
+
|