sysaid 0.2.3 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f49dcebd66ea760d49e0d132e4399c82e3ecde63
4
- data.tar.gz: e79e424da0578c4a74472dc4ec4ed860f84d38ec
3
+ metadata.gz: 0bc7dbae6cf5ac0e3a514cf8316b1c5aebd16a9e
4
+ data.tar.gz: babb7c8076094240eaa4bd1d18eb621ef0e7e46f
5
5
  SHA512:
6
- metadata.gz: ab79799a3ee16ee7dae450d9eacea35487b5a4a449e63f6fab7427535afd7be4a9cf7b2472604cdd82f06e785a924cecbfaeb5399eb6ca35162ba05247c8caf6
7
- data.tar.gz: 450423b60e147cea0e4aacc1034927591fc218fb1290d8b0cf13353b5d132fabef4f0d264ead8fa87872bb922b64e927d8b2a59f8467214a75eeb7e2ee389788
6
+ metadata.gz: 9fc827b98fe2ac91bad360001165d9971c15d157ae723ddc9fb293333634432c03e172b951f5087e9c1c8ba4cb32cfe875f1e40624dee3600a6a5c43438e977a
7
+ data.tar.gz: a67f7d7288856fdc424e9f7ab4d68e8daa14a7a795569152d641e63acd014219eb0f36386d1daed61392cc0fd78fc72ef572f964307d5a70e6c01f4e5d07a64b
@@ -67,6 +67,7 @@ class SysAid
67
67
  end
68
68
  end
69
69
 
70
+ require 'sysaid/activity'
70
71
  require 'sysaid/project'
71
72
  require 'sysaid/task'
72
73
  require 'sysaid/ticket'
@@ -0,0 +1,148 @@
1
+ require 'date'
2
+
3
+ class SysAid::Activity
4
+ attr_accessor :ciid, :cust_int1, :cust_int2, :cust_int3, :cust_int4, :cust_list1, :cust_list2, :description, :from_time,
5
+ :id, :sr_id, :to_time, :user
6
+
7
+ def initialize
8
+ reset_all_attributes
9
+ end
10
+
11
+ # Needed by both initialize and delete (to empty out the object when deleted)
12
+ def reset_all_attributes
13
+ self.ciid = nil
14
+ self.cust_int1 = nil
15
+ self.cust_int2 = nil
16
+ self.cust_int3 = nil
17
+ self.cust_int4 = nil
18
+ self.cust_list1 = nil
19
+ self.cust_list2 = nil
20
+ self.description = nil
21
+ self.from_time = Date.new
22
+ self.id = nil
23
+ self.sr_id = nil
24
+ self.to_time = Date.new
25
+ self.user = nil
26
+ end
27
+
28
+ # Returns an array of Activity IDs based on ticket_id.
29
+ # Returns false on error.
30
+ def self.find_by_ticket_id(ticket_id)
31
+ response = SysAid.client.call(:execute_select_query, message: sql_query(" service_req_id = #{ticket_id}"))
32
+
33
+ if response.to_hash[:execute_select_query_response][:return]
34
+ return response.to_hash[:execute_select_query_response][:return]
35
+ end
36
+
37
+ return false
38
+ end
39
+
40
+ # Returns a specific Activity based on an Activity ID
41
+ def self.find_by_id(activity_id)
42
+ activity = SysAid::Activity.new
43
+
44
+ activity.id = activity_id
45
+
46
+ return nil unless activity.refresh
47
+
48
+ return activity
49
+ end
50
+
51
+ # Loads the latest ticket information from the SysAid server
52
+ def refresh
53
+ response = SysAid.client.call(:load_by_string_id, message: to_xml)
54
+
55
+ if response.to_hash[:load_by_string_id_response][:return]
56
+ set_self_from_response(response.to_hash[:load_by_string_id_response][:return])
57
+ return true
58
+ end
59
+
60
+ return false
61
+ end
62
+
63
+ # Saves an activity back to the SysAid server
64
+ #
65
+ # Example:
66
+ # >> activity_object.save
67
+ # => true
68
+ def save
69
+ if SysAid.logged_in? == false
70
+ raise "You must log in before creating or saving an activity."
71
+ end
72
+
73
+ # Save it via the SOAP API
74
+ response = SysAid.client.call(:save, message: to_xml(false))
75
+ if response.to_hash[:save_response][:return]
76
+ # In the case of new activities, the SysAid response will be the assigned ID
77
+ self.id = response.to_hash[:save_response][:return] unless self.id
78
+ return true
79
+ else
80
+ return false
81
+ end
82
+ end
83
+
84
+ # Deletes an activity from the SysAid server
85
+ #
86
+ # No return value as SysAid's 'delete' call returns void. No idea why.
87
+ #
88
+ # Example:
89
+ # >> activity_object.delete
90
+ # => true
91
+ def delete
92
+ SysAid.client.call(:delete, message: to_xml(false))
93
+
94
+ reset_all_attributes
95
+ end
96
+
97
+ private
98
+
99
+ def self.sql_query(query)
100
+ builder = Builder::XmlMarkup.new
101
+
102
+ builder.sessionId(SysAid.session_id)
103
+ xml = builder.apiSysObj('xsi:type' => "tns:apiServiceRequestActivity")
104
+ xml = builder.condition(query)
105
+ xml
106
+ end
107
+
108
+ def to_xml(include_id = true)
109
+ builder = Builder::XmlMarkup.new
110
+
111
+ builder.sessionId(SysAid.session_id)
112
+ xml = builder.apiSysObj('xsi:type' => "tns:apiServiceRequestActivity") { |b|
113
+ b.CIId(self.ciid, 'xsi:type' => 'xsd:int')
114
+ b.custInt1(self.cust_int1, 'xsi:type' => 'xsd:int')
115
+ b.custInt2(self.cust_int2, 'xsi:type' => 'xsd:int')
116
+ b.custInt3(self.cust_int3, 'xsi:type' => 'xsd:int')
117
+ b.custInt4(self.cust_int4, 'xsi:type' => 'xsd:int')
118
+ b.custList1(self.cust_list1, 'xsi:type' => 'xsd:int')
119
+ b.custList2(self.cust_list2, 'xsi:type' => 'xsd:int')
120
+ b.description(self.description, 'xsi:type' => 'xsd:string')
121
+ b.fromTime(self.from_time.rfc3339, 'xsi:type' => 'xsd:dateTime')
122
+ b.id(self.id, 'xsi:type' => 'xsd:int')
123
+ b.srID(self.sr_id, 'xsi:type' => 'xsd:int')
124
+ b.toTime(self.to_time.rfc3339, 'xsi:type' => 'xsd:dateTime')
125
+ b.user(self.user, 'xsi:type' => 'xsd:string')
126
+ }
127
+ xml = builder.id(self.id) if include_id
128
+
129
+ xml
130
+ end
131
+
132
+ # Update instance variables to match what is in response
133
+ def set_self_from_response(response)
134
+ self.ciid = response[:ci_id]
135
+ self.cust_int1 = response[:cust_int1]
136
+ self.cust_int2 = response[:cust_int2]
137
+ self.cust_int3 = response[:cust_int3]
138
+ self.cust_int4 = response[:cust_int4]
139
+ self.cust_list1 = response[:cust_list1]
140
+ self.cust_list2 = response[:cust_list2]
141
+ self.description = response[:description]
142
+ self.from_time = response[:from_time]
143
+ self.id = response[:id]
144
+ self.sr_id = response[:sr_id]
145
+ self.to_time = response[:to_time]
146
+ self.user = response[:user]
147
+ end
148
+ end
@@ -10,9 +10,63 @@ class SysAid::Ticket
10
10
  :update_time, :update_user, :user_manager, :workaround, :insert_time, :followup_text, :email_account
11
11
 
12
12
  def initialize
13
+ reset_all_attributes
14
+ end
15
+
16
+ # Needed by both initialize and delete (to empty out the object when deleted)
17
+ def reset_all_attributes
18
+ self.agreement = nil
19
+ self.archive = nil
20
+ self.assign_counter = nil
21
+ self.assigned_group = nil
22
+ self.assigned_to = nil
23
+ self.ciid = nil
24
+ self.category = nil
25
+ self.cc = nil
26
+ self.change_category = nil
13
27
  self.close_time = Date.new
28
+ self.closure_information = nil
29
+ self.computer_id = nil
30
+ self.current_support_level = nil
31
+ self.cust_int1 = nil
32
+ self.cust_int2 = nil
33
+ self.cust_list1 = nil
34
+ self.cust_list2 = nil
35
+ self.cust_notes = nil
36
+ self.cust_text1 = nil
37
+ self.cust_text2 = nil
38
+ self.description = nil
39
+ self.email_account = nil
40
+ self.escalation = nil
41
+ self.followup_text = nil
42
+ self.id = nil
43
+ self.impact = nil
14
44
  self.insert_time = Date.new
45
+ self.location = nil
46
+ self.max_support_level = nil
47
+ self.notes = nil
48
+ self.parent_link = nil
49
+ self.priority = nil
50
+ self.project_id = nil
51
+ self.reopen_counter = nil
52
+ self.request_user = nil
53
+ self.resolution = nil
54
+ self.solution = nil
55
+ self.source = nil
56
+ self.sr_sub_type = nil
57
+ self.sr_type = nil
58
+ self.status = nil
59
+ self.sub_category = nil
60
+ self.success_rating = nil
61
+ self.task_id = nil
62
+ self.third_level_category = nil
63
+ self.title = nil
15
64
  self.update_time = Date.new
65
+ self.update_user = nil
66
+ self.urgency = nil
67
+ self.user_manager = nil
68
+ self.version = nil
69
+ self.workaround = nil
16
70
  end
17
71
 
18
72
  def self.find_by_id(ticket_id)
@@ -63,6 +117,8 @@ class SysAid::Ticket
63
117
  # Save it via the SOAP API
64
118
  response = SysAid.client.call(:save, message: to_xml(false))
65
119
  if response.to_hash[:save_response][:return]
120
+ # In the case of a new ticket, the SysAid response will be the assigned ID
121
+ self.id = response.to_hash[:save_response][:return] unless self.id
66
122
  return true
67
123
  else
68
124
  return false
@@ -78,6 +134,8 @@ class SysAid::Ticket
78
134
  # => true
79
135
  def delete
80
136
  SysAid.client.call(:delete, message: to_xml(false))
137
+
138
+ reset_all_attributes
81
139
  end
82
140
 
83
141
  private
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sysaid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christopher Thielen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-17 00:00:00.000000000 Z
11
+ date: 2014-01-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: savon
@@ -37,6 +37,7 @@ extensions: []
37
37
  extra_rdoc_files: []
38
38
  files:
39
39
  - lib/sysaid.rb
40
+ - lib/sysaid/activity.rb
40
41
  - lib/sysaid/project.rb
41
42
  - lib/sysaid/task.rb
42
43
  - lib/sysaid/ticket.rb