sysaid 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 0519d826d111724b463a1f8cbb69929c01af2445
4
+ data.tar.gz: 688d94e4230f20f817a2bfe3286544fdc11ffdeb
5
+ SHA512:
6
+ metadata.gz: 477e368c753ae59ce4bc1f43f16232c33d6a9b488d399e679a992bc46abe9916f66894b08fef546f0525a619834947ab56becf24ddf9e558cbf369b98d41ad30
7
+ data.tar.gz: 1e9b146eef9d2be2b83063e4bb42096f76ee9244cfde39839a02daf6872ff16b8969c2d437138aa14fe4f43793ed20c176b47bc196163e1e6384e072bd692f56
data/lib/sysaid.rb CHANGED
@@ -1,63 +1,14 @@
1
+ require 'savon'
2
+
1
3
  # The main SysAid class
2
4
  class SysAid
3
5
  @@logged_in = false
4
6
  @@server_settings = {}
5
7
 
6
- # Implements find_by_* methods, e.g. find_by_id, find_by_responsibility, etc.
7
- def self.method_missing(meth, *args, &block)
8
- if meth.to_s =~ /^find_by_(.+)$/
9
- run_find_by_method($1, *args, &block)
10
- else
11
- super
12
- end
13
- end
14
-
15
- # Find tickets by ID, responsibility, status, etc.
16
- # Note: run_find_by_method is called from self.method_missing
17
- #
18
- # Example:
19
- # >> SysAid.find_by_id(34)
20
- # => hola mundo
21
- #
22
- # Arguments:
23
- # argument: (String or Integer)
24
- def self.run_find_by_method(attrs, *args, &block)
25
- # Make a key/value hash of attributes
26
- attrs = attrs.split('_and_')
27
- attrs_with_args = [attrs, args].transpose
28
- conditions = Hash[attrs_with_args]
29
-
30
- if self.logged_in? == false
31
- self.login
32
- end
33
-
34
- sr = ApiServiceRequest.new
35
- if conditions.keys[0] == "id"
36
- # ID requires we use loadById, not executeSelectQuery
37
- result = @@service.loadByStringId({:sessionId => @@session_id, :apiSysObj => sr, :id => conditions.values[0]})
38
- else
39
- result = @@service.executeSelectQuery({:sessionId => @@session_id, :apiSysObj => sr, :condition => "#{conditions.keys[0]} = '#{conditions.values[0]}'"})
40
- end
41
-
42
- if result.instance_variables.include?(:@v_return)
43
- return SysAid::Ticket.new(result.v_return)
44
- else
45
- return nil # ticket not found
46
- end
47
- end
48
-
49
- def self.respond_to?(meth)
50
- if meth.to_s =~ /^find_by_.*$/
51
- true
52
- else
53
- super
54
- end
55
- end
56
-
57
8
  # Accessor for internal SysaidApiService object.
58
9
  # Used by SysAid::Ticket
59
- def self.service
60
- @@service
10
+ def self.client
11
+ @@client
61
12
  end
62
13
 
63
14
  # Accessor for session ID returned by SysAid server.
@@ -74,8 +25,7 @@ class SysAid
74
25
  # => true
75
26
  def self.logged_in?
76
27
  # Until official word comes from the company, we're going to login every time
77
- # to avoid a problem with undetected timeouts
78
-
28
+ # to avoid a problem with undetected timeouts.
79
29
  #if @@logged_in == false
80
30
  login
81
31
  #end
@@ -87,32 +37,29 @@ class SysAid
87
37
  end
88
38
  end
89
39
 
90
- def self.server_settings
91
- @@server_settings
92
- end
93
-
94
- def self.server_settings=(server_settings)
95
- @@server_settings = server_settings
96
- end
97
-
98
- private
99
- def self.login
100
- @@service = SysaidApiService.new(@@server_settings[:endpoint])
101
-
102
- # see SOAP wiredumps (for debugging)
103
- unless @@server_settings[:debug].nil?
104
- @@service.wiredump_dev = @@server_settings[:debug]
40
+ # self.login does not require credentials be passed every time.
41
+ # SysAid sometimes times out the session and we can simply call 'login' again with the
42
+ # saved credentials to get around the timeout.
43
+ def self.login(account = nil, username = nil, password = nil, wsdl_uri = nil, debug = false)
44
+ if account and username and password and wsdl_uri
45
+ # Save server settings in case we need to log in again later
46
+ @@server_settings = { :account => account, :username => username, :password => password, :wsdl_uri => wsdl_uri, :debug => debug }
105
47
  end
106
-
48
+
49
+ @@client = Savon.client(wsdl: @@server_settings[:wsdl_uri], log: @@server_settings[:debug])
50
+
107
51
  # login
108
52
  unless @@server_settings[:account].nil?
109
- result = @@service.login({:accountId => @@server_settings[:account], :userName => @@server_settings[:username], :password => @@server_settings[:password]})
110
- @@session_id = result.v_return
111
-
53
+ # Call login
54
+ response = @@client.call(:login, message: { accountId: @@server_settings[:account], userName: @@server_settings[:username], password: @@server_settings[:password] })
55
+
56
+ # Retrieve response
57
+ @@session_id = response.to_hash[:login_response][:return]
58
+
112
59
  @@logged_in = true
113
60
  end
114
61
  end
115
62
  end
116
63
 
117
- require 'sysaid/driver/SysaidApiServiceServiceDriver'
118
64
  require 'sysaid/ticket'
65
+ require 'sysaid/user'
data/lib/sysaid/ticket.rb CHANGED
@@ -1,20 +1,39 @@
1
+ require 'date'
2
+
1
3
  class SysAid::Ticket
2
- # Creates a SysAid::Ticket object
3
- #
4
- # Example:
5
- # >> SysAid::Ticket.new
6
- # => SysAid::Ticket
7
- #
8
- # Arguments:
9
- # service_request: (ApiServiceRequest object, optional)
10
- def initialize(service_request = nil)
11
- @sr = service_request
4
+ attr_accessor :agreement, :assignCounter, :assignedTo, :ciid, :category, :currentSupportLevel, :custInt1,
5
+ :custInt2, :custList1, :custList2, :description, :escalation, :id, :location, :maxSupportLevel,
6
+ :parentLink, :priority, :projectID, :reopenCounter, :requestUser, :source, :srSubType, :srType,
7
+ :status, :subCategory, :submitUser, :successRating, :taskID, :title, :urgency, :version, :archive,
8
+ :assignedGroup, :assignedTo, :cc, :changeCategory, :closeTime, :closureInformation, :computerID,
9
+ :custNotes, :custText1, :custText2, :impact, :notes, :resolution, :solution, :thirdLevelCategory,
10
+ :updateTime, :updateUser, :userManager, :workaround
11
+
12
+ def initialize
13
+ self.closeTime = Date.new
14
+ self.updateTime = Date.new
15
+ end
16
+
17
+ def self.find_by_id(ticket_id)
18
+ ticket = SysAid::Ticket.new
12
19
 
13
- if service_request.nil?
14
- @sr = ApiServiceRequest.new
20
+ ticket.id = ticket_id
21
+
22
+ return nil unless ticket.refresh
23
+
24
+ return ticket
25
+ end
26
+
27
+ # Loads the latest user information from the SysAid server
28
+ def refresh
29
+ response = SysAid.client.call(:load_by_string_id, message: to_xml)
30
+
31
+ if response.to_hash[:load_by_string_id_response][:return]
32
+ set_self_from_response(response.to_hash[:load_by_string_id_response][:return])
33
+ return true
15
34
  end
16
35
 
17
- set_self_from_sr
36
+ return false
18
37
  end
19
38
 
20
39
  # Saves a ticket back to the SysAid server
@@ -24,17 +43,12 @@ class SysAid::Ticket
24
43
  # => true
25
44
  def save
26
45
  if SysAid.logged_in? == false
27
- raise "You must create a SysAid instance and log in before attempting to create a ticket."
46
+ raise "You must log in before creating or saving a ticket."
28
47
  end
29
48
 
30
- # Save public variables back to the ApiServiceRequest (@sr) variable
31
- set_sr_from_self
32
-
33
49
  # Save it via the SOAP API
34
- result = SysAid.service.save({:sessionId => SysAid.session_id, :apiSysObj => @sr})
35
- if result.v_return.to_i > 0
36
- self.instance_variable_set(:@id, result.v_return.to_i)
37
- @sr.instance_variable_set(:@id, result.v_return.to_i)
50
+ response = SysAid.client.call(:save, message: to_xml(false))
51
+ if response.to_hash[:save_response][:return]
38
52
  return true
39
53
  else
40
54
  return false
@@ -43,54 +57,133 @@ class SysAid::Ticket
43
57
 
44
58
  # Deletes a ticket from the SysAid server
45
59
  #
60
+ # No return value as SysAid's 'delete' call returns void. No idea why.
61
+ #
46
62
  # Example:
47
63
  # >> ticket_object.delete
48
64
  # => true
49
65
  def delete
50
- unless @sr.instance_variable_get(:@id).nil?
51
- SysAid.service.delete({:sessionId => SysAid.session_id, :apiSysObj => @sr})
52
-
53
- return true
54
- end
55
-
56
- false
57
- end
58
-
59
- # For dynamically creating attr_accessors
60
- # (from http://stackoverflow.com/questions/4082665/dynamically-create-class-attributes-with-attr-accessor)
61
- def create_method( name, &block )
62
- self.class.send( :define_method, name, &block )
63
- end
64
-
65
- def create_attr( name )
66
- create_method( "#{name}=".to_sym ) { |val|
67
- instance_variable_set( "@" + name, val)
68
- }
69
-
70
- create_method( name.to_sym ) {
71
- instance_variable_get( "@" + name )
72
- }
66
+ SysAid.client.call(:delete, message: to_xml(false))
73
67
  end
74
68
 
75
69
  private
76
- # Note: We sync between @sr and our instance variables for API convenience, i.e.
77
- # so one can say, ticket.title = "something" instead of
78
- # ticket.instance_variable_get(:@sr).instance_variable_set(:@title, "something").
79
70
 
80
- # Updates instance variables to match what is in @sr
81
- def set_self_from_sr
82
- @sr_symbols = []
83
- @sr.instance_variables.each do |field|
84
- @sr_symbols << field
85
- self.create_attr(field.to_s[1..-1])
86
- self.instance_variable_set(field, @sr.instance_variable_get(field.to_sym))
87
- end
71
+ def to_xml(include_id = true)
72
+ builder = Builder::XmlMarkup.new
73
+
74
+ builder.sessionId(SysAid.session_id)
75
+ xml = builder.apiSysObj('xsi:type' => "tns:apiServiceRequest") { |b|
76
+ b.agreement(self.agreement, 'xsi:type' => 'xsd:int')
77
+ b.archive(self.archive, 'xsi:type' => 'xsd:boolean')
78
+ b.assignCounter(self.assignCounter, 'xsi:type' => 'xsd:int')
79
+ b.assignedGroup(self.assignedGroup, 'xsi:type' => 'xsd:string')
80
+ b.assignedTo(self.assignedTo, 'xsi:type' => 'xsd:string')
81
+ b.CIId(self.ciid, 'xsi:type' => 'xsd:int')
82
+ b.category(self.category, 'xsi:type' => 'xsd:string')
83
+ b.cc(self.cc, 'xsi:type' => 'xsd:string')
84
+ b.changeCategory(self.changeCategory, 'xsi:type' => 'xsd:int')
85
+ b.closeTime(self.closeTime.rfc3339, 'xsi:type' => 'xsd:dateTime')
86
+ b.closureInformation(self.closureInformation, 'xsi:type' => 'xsd:int')
87
+ b.computerID(self.computerID, 'xsi:type' => 'xsd:string')
88
+ b.currentSupportLevel(self.currentSupportLevel, 'xsi:type' => 'xsd:int')
89
+ b.custInt1(self.custInt1, 'xsi:type' => 'xsd:int')
90
+ b.custInt2(self.custInt2, 'xsi:type' => 'xsd:int')
91
+ b.custList1(self.custList1, 'xsi:type' => 'xsd:int')
92
+ b.custList2(self.custList2, 'xsi:type' => 'xsd:int')
93
+ b.custNotes(self.custNotes, 'xsi:type' => 'xsd:string')
94
+ b.custText1(self.custText1, 'xsi:type' => 'xsd:string')
95
+ b.custText2(self.custText2, 'xsi:type' => 'xsd:string')
96
+ b.customDateFields
97
+ #b.customFields
98
+ b.description(self.description, 'xsi:type' => 'xsd:string')
99
+ # <emailAccount xsi:type="xsd:string"></emailAccount>
100
+ b.escalation(self.escalation, 'xsi:type' => 'xsd:int')
101
+ # <followupText xsi:type="xsd:string"></followupText>
102
+ b.id(self.id, 'xsi:type' => 'xsd:int')
103
+ b.impact(self.impact, 'xsi:type' => 'xsd:int')
104
+ # <insertTime xsi:type="xsd:dateTime">
105
+ # 2012-06-13T17:42:03.053Z</insertTime>
106
+ b.location(self.location, 'xsi:type' => 'xsd:int')
107
+ b.maxSupportLevel(self.maxSupportLevel, 'xsi:type' => 'xsd:int')
108
+ b.notes(self.notes, 'xsi:type' => 'xsd:string')
109
+ b.parentLink(self.parentLink, 'xsi:type' => 'xsd:int')
110
+ b.priority(self.priority, 'xsi:type' => 'xsd:int')
111
+ b.projectID(self.projectID, 'xsi:type' => 'xsd:int')
112
+ b.reopenCounter(self.reopenCounter, 'xsi:type' => 'xsd:int')
113
+ b.requestUser(self.requestUser, 'xsi:type' => 'xsd:string')
114
+ b.resolution(self.resolution, 'xsi:type' => 'xsd:string')
115
+ b.solution(self.solution, 'xsi:type' => 'xsd:string')
116
+ b.source(self.source, 'xsi:type' => 'xsd:int')
117
+ b.srSubType(self.srSubType, 'xsi:type' => 'xsd:int')
118
+ b.srType(self.srType, 'xsi:type' => 'xsd:int')
119
+ b.status(self.status, 'xsi:type' => 'xsd:int')
120
+ b.subCategory(self.subCategory, 'xsi:type' => 'xsd:string')
121
+ b.successRating(self.successRating, 'xsi:type' => 'xsd:int')
122
+ b.taskID(self.taskID, 'xsi:type' => 'xsd:int')
123
+ b.thirdLevelCategory(self.thirdLevelCategory, 'xsi:type' => 'xsd:string')
124
+ b.title(self.title, 'xsi:type' => 'xsd:string')
125
+ b.updateTime(self.updateTime.rfc3339, 'xsi:type' => 'xsd:dateTime')
126
+ b.updateUser(self.updateUser, 'xsi:type' => 'xsd:string')
127
+ b.urgency(self.urgency, 'xsi:type' => 'xsd:int')
128
+ b.userManager(self.userManager, 'xsi:type' => 'xsd:string')
129
+ b.version(self.version, 'xsi:type' => 'xsd:int')
130
+ b.workaround(self.workaround, 'xsi:type' => 'xsd:string')
131
+ }
132
+ xml = builder.id(self.id) if include_id
133
+
134
+ xml
88
135
  end
89
136
 
90
- # Updates @sr to match what is in our instance variables
91
- def set_sr_from_self
92
- @sr_symbols.each do |symbol|
93
- @sr.instance_variable_set(symbol, self.instance_variable_get(symbol))
94
- end
137
+ # Update instance variables to match what is in response
138
+ def set_self_from_response(response)
139
+ self.agreement = response[:agreement]
140
+ self.archive = response[:archive]
141
+ self.assignCounter = response[:assignCounter]
142
+ self.assignedGroup = response[:assignGroup]
143
+ self.assignedTo = response[:assignTo]
144
+ self.ciid = response[:CIId]
145
+ self.category = response[:category]
146
+ self.cc = response[:cc]
147
+ self.changeCategory = response[:changeCategory]
148
+ self.closeTime = Date.parse(response[:closeTime]) if response[:closeTime]
149
+ self.closureInformation = response[:closureInformation]
150
+ self.computerID = response[:computerID]
151
+ self.currentSupportLevel = response[:currentSupportLevel]
152
+ self.custInt1 = response[:custInt1]
153
+ self.custInt2 = response[:custInt2]
154
+ self.custList1 = response[:custList1]
155
+ self.custList2 = response[:custList2]
156
+ self.custNotes = response[:custNotes]
157
+ self.custText1 = response[:custText1]
158
+ self.custText2 = response[:custText2]
159
+ self.description = response[:description]
160
+ self.escalation = response[:escalation]
161
+ self.id = response[:id]
162
+ self.impact = response[:impact]
163
+ self.location = response[:location]
164
+ self.maxSupportLevel = response[:maxSupportLevel]
165
+ self.notes = response[:notes]
166
+ self.parentLink = response[:parentLink]
167
+ self.priority = response[:priority]
168
+ self.projectID = response[:projectID]
169
+ self.reopenCounter = response[:reopenCounter]
170
+ self.requestUser = response[:requestUser]
171
+ self.resolution = response[:resolution]
172
+ self.solution = response[:solution]
173
+ self.source = response[:source]
174
+ self.srSubType = response[:srSubType]
175
+ self.srType = response[:srType]
176
+ self.status = response[:status]
177
+ self.subCategory = response[:subCategory]
178
+ self.successRating = response[:successRating]
179
+ self.taskID = response[:taskID]
180
+ self.thirdLevelCategory = response[:thirdLevelCategory]
181
+ self.title = response[:title]
182
+ self.updateTime = Date.parse(response[:updateTime]) if response[:updateTime]
183
+ self.updateUser = response[:updateUser]
184
+ self.urgency = response[:urgency]
185
+ self.userManager = response[:userManager]
186
+ self.version = response[:version]
187
+ self.workaround = response[:workaround]
95
188
  end
96
189
  end
@@ -0,0 +1,155 @@
1
+ class SysAid::User
2
+ attr_accessor :username, :display_name, :email, :phone, :first_name, :last_name, :admin, :agreement, :building,
3
+ :car_number, :cellphone, :company, :cubic, :custInt1, :custInt2, :custList1, :custList2, :custNotes,
4
+ :custText1, :custText2, :department, :disable, :emailNotifications, :enableLoginToEup, :floor, :location,
5
+ :manager, :notes, :sms, :userManagerName, :loginDomain, :loginUser, :secondaryEmail
6
+
7
+ # Creates a SysAid::User object
8
+ #
9
+ # Example:
10
+ # >> SysAid::User.new
11
+ # => SysAid::User
12
+ #
13
+ # Arguments:
14
+ # username: (SysAid username, optional)
15
+ def initialize(username = nil)
16
+ self.username = username
17
+ end
18
+
19
+ def self.find_by_username(username)
20
+ user = SysAid::User.new(username)
21
+
22
+ return nil unless user.refresh
23
+
24
+ return user
25
+ end
26
+
27
+ # Loads the latest user information from the SysAid server
28
+ def refresh
29
+ response = SysAid.client.call(:load_by_string_id, message: to_xml.to_s )
30
+ if response.to_hash[:load_by_string_id_response][:return]
31
+ set_self_from_response(response.to_hash[:load_by_string_id_response][:return])
32
+ return true
33
+ end
34
+
35
+ return false
36
+ end
37
+
38
+ # Saves a user back to the SysAid server
39
+ #
40
+ # Example:
41
+ # >> user_object.save
42
+ # => true
43
+ def save
44
+ if SysAid.logged_in? == false
45
+ raise "You must log in before creating or saving a user."
46
+ end
47
+
48
+ # Save it via the SOAP API
49
+ response = SysAid.client.call(:save, message: to_xml(false).to_s )
50
+ if response.to_hash[:save_response][:return]
51
+ return true
52
+ else
53
+ return false
54
+ end
55
+ end
56
+
57
+ # Deletes a ticket from the SysAid server
58
+ #
59
+ # Example:
60
+ # >> ticket_object.delete
61
+ # => true
62
+ def delete
63
+ response = SysAid.client.call(:delete, message: to_xml(false).to_s )
64
+
65
+ #response.to_hash[:delete_response]
66
+
67
+ # The SysAid API doesn't return anything on delete.
68
+ # Think about that for a minute.
69
+ end
70
+
71
+ private
72
+
73
+ def to_xml(include_id = true)
74
+ builder = Builder::XmlMarkup.new
75
+
76
+ builder.sessionId(SysAid.session_id)
77
+ xml = builder.apiSysObj('xsi:type' => "tns:apiSysAidUser") { |b|
78
+ b.admin(self.admin, 'xsi:type' => 'xsd:boolean')
79
+ b.agreement(self.agreement, 'xsi:type' => 'xsd:int')
80
+ b.building(self.building, 'xsi:type' => 'xsd:string')
81
+ b.carNumber(self.car_number, 'xsi:type' => 'xsd:string')
82
+ b.cellphone(self.cellphone, 'xsi:type' => 'xsd:string')
83
+ b.company(self.company, 'xsi:type' => 'xsd:int')
84
+ b.cubic(self.cubic, 'xsi:type' => 'xsd:string')
85
+ b.custInt1(self.custInt1, 'xsi:type' => 'xsd:int')
86
+ b.custInt2(self.custInt2, 'xsi:type' => 'xsd:int')
87
+ b.custList1(self.custList1, 'xsi:type' => 'xsd:int')
88
+ b.custList2(self.custList2, 'xsi:type' => 'xsd:int')
89
+ b.custNotes(self.custNotes, 'xsi:type' => 'xsd:string')
90
+ b.custText1(self.custText1, 'xsi:type' => 'xsd:string')
91
+ b.custText2(self.custText2, 'xsi:type' => 'xsd:string')
92
+ b.customDateFields
93
+ b.customFields
94
+ b.department(self.department, 'xsi:type' => 'xsd:int')
95
+ b.disable(self.disable, 'xsi:type' => 'xsd:boolean')
96
+ b.displayName(self.display_name, 'xsi:type' => 'xsd:string')
97
+ b.email(self.email, 'xsi:type' => 'xsd:string')
98
+ b.emailNotifications(self.emailNotifications, 'xsi:type' => 'xsd:boolean')
99
+ b.enableLoginToEup(self.enableLoginToEup, 'xsi:type' => 'xsd:boolean')
100
+ b.firstName(self.first_name, 'xsi:type' => 'xsd:string')
101
+ b.floor(self.floor, 'xsi:type' => 'xsd:string')
102
+ b.lastName(self.last_name, 'xsi:type' => 'xsd:string')
103
+ b.location(self.location, 'xsi:type' => 'xsd:int')
104
+ b.loginDomain(self.loginDomain, 'xsi:type' => 'xsd:string')
105
+ b.loginUser(self.loginUser, 'xsi:type' => 'xsd:string')
106
+ b.manager(self.manager, 'xsi:type' => 'xsd:boolean')
107
+ b.notes(self.notes, 'xsi:type' => 'xsd:string')
108
+ b.phone(self.phone, 'xsi:type' => 'xsd:string')
109
+ b.secondaryEmail(self.secondaryEmail, 'xsi:type' => 'xsd:string')
110
+ b.sms(self.sms, 'xsi:type' => 'xsd:string')
111
+ b.userManagerName(self.userManagerName, 'xsi:type' => 'xsd:string')
112
+ b.userName(self.username, 'xsi:type' => 'xsd:string')
113
+ }
114
+ xml = builder.id(self.username) if include_id
115
+
116
+ xml
117
+ end
118
+
119
+ # Update instance variables to match what is in response
120
+ def set_self_from_response(response)
121
+ self.username = response[:user_name]
122
+ self.display_name = response[:display_name]
123
+ self.email = response[:email]
124
+ self.phone = response[:phone]
125
+ self.first_name = response[:first_name]
126
+ self.last_name = response[:last_name]
127
+ self.admin = response[:admin]
128
+ self.agreement = response[:agreement]
129
+ self.building = response[:building]
130
+ self.car_number = response[:carNumber]
131
+ self.cellphone = response[:cellphone]
132
+ self.company = response[:company]
133
+ self.cubic = response[:cubic]
134
+ self.custInt1 = response[:custInt1]
135
+ self.custInt2 = response[:custInt2]
136
+ self.custList1 = response[:custList1]
137
+ self.custList2 = response[:custList2]
138
+ self.custNotes = response[:custNotes]
139
+ self.custText1 = response[:custText1]
140
+ self.custText2 = response[:custText2]
141
+ self.department = response[:department]
142
+ self.disable = response[:disable]
143
+ self.emailNotifications = response[:emailNotifications]
144
+ self.enableLoginToEup = response[:enableLoginToEup]
145
+ self.floor = response[:floor]
146
+ self.location = response[:location]
147
+ self.manager = response[:manager]
148
+ self.notes = response[:notes]
149
+ self.sms = response[:sms]
150
+ self.userManagerName = response[:userManagerName]
151
+ self.loginDomain = response[:loginDomain]
152
+ self.loginUser = response[:loginUser]
153
+ self.secondaryEmail = response[:secondaryEmail]
154
+ end
155
+ end