sysaid 0.2.1 → 0.2.2

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: b4fe7162cf00afdf721ab97712445a400f9ddf4e
4
- data.tar.gz: ab0ee5cd4a41d955f02f69d06d6ecc8a9ebe0820
3
+ metadata.gz: 28de569790b5e1535736dbe13140e24bd5db028c
4
+ data.tar.gz: 4d8ccbf9063b61f34aff001add3219fcaed693b8
5
5
  SHA512:
6
- metadata.gz: 6b9affe8dea28fa3c0938e30cfc8a8f679c3efba784399e4e02e16058a2073d680a5b7e2389dd3d778580c00adcf92afb3c9e48c1427c103675384024e3eb2ae
7
- data.tar.gz: 887e542faa903d7e6bdc7559d0e12762097297aebca0a5f3610897162207579ead0e439589753779c4554c87197a05b4022bfeefe112db2b7b4d87826f1981e6
6
+ metadata.gz: 649aaffb348c3647e10eaa11bf3557d0c9bd7a758d95acc79bdbba118d9c103a97c269716a41f948d0960c45c81aa2911aea03223706f65481318fe172c5725a
7
+ data.tar.gz: 8e48200f76e6a8f0049df3dbe49738b618209ffd53b04b18fd44b68158ec7b9ee7a284e62fb19525876e0d5deb945564f5122764cdca2fa415045854160d5727
data/lib/sysaid.rb CHANGED
@@ -61,5 +61,7 @@ class SysAid
61
61
  end
62
62
  end
63
63
 
64
+ require 'sysaid/project'
65
+ require 'sysaid/task'
64
66
  require 'sysaid/ticket'
65
67
  require 'sysaid/user'
@@ -0,0 +1,153 @@
1
+ require 'date'
2
+
3
+ class SysAid::Project
4
+ attr_accessor :assigned_group, :category, :company, :cust_date1, :cust_date2, :cust_int1, :cust_int2, :cust_list1,
5
+ :cust_list2, :cust_notes, :custom_date_fields, :custom_fields, :cust_text1, :cust_text2, :description,
6
+ :end_time, :id, :incident_title, :manager, :notes, :progress, :raw_estimation, :request_group,
7
+ :start_time, :status, :title, :version
8
+
9
+ def initialize
10
+ self.start_time = Date.new
11
+ self.end_time = Date.new
12
+ end
13
+
14
+ def self.find_by_id(project_id)
15
+ project = SysAid::Project.new
16
+
17
+ project.id = project_id
18
+
19
+ return nil unless project.refresh
20
+
21
+ return project
22
+ end
23
+
24
+ def self.find_by_query(query)
25
+ response = SysAid.client.call(:execute_select_query, message: sql_query(query))
26
+
27
+ if response.to_hash[:execute_select_query_response][:return]
28
+ return response.to_hash[:execute_select_query_response][:return]
29
+ end
30
+
31
+ return false
32
+ end
33
+
34
+ # Loads the latest project information from the SysAid server
35
+ def refresh
36
+ response = SysAid.client.call(:load_by_string_id, message: to_xml)
37
+
38
+ if response.to_hash[:load_by_string_id_response][:return]
39
+ set_self_from_response(response.to_hash[:load_by_string_id_response][:return])
40
+ return true
41
+ end
42
+
43
+ return false
44
+ end
45
+
46
+ # Saves a project back to the SysAid server
47
+ #
48
+ # Example:
49
+ # >> project_object.save
50
+ # => true
51
+ def save
52
+ if SysAid.logged_in? == false
53
+ raise "You must log in before creating or saving a project."
54
+ end
55
+
56
+ # Save it via the SOAP API
57
+ response = SysAid.client.call(:save, message: to_xml(false))
58
+ if response.to_hash[:save_response][:return]
59
+ return true
60
+ else
61
+ return false
62
+ end
63
+ end
64
+
65
+ # Deletes a project from the SysAid server
66
+ #
67
+ # No return value as SysAid's 'delete' call returns void. No idea why.
68
+ #
69
+ # Example:
70
+ # >> project_object.delete
71
+ # => true
72
+ def delete
73
+ SysAid.client.call(:delete, message: to_xml(false))
74
+ end
75
+
76
+ private
77
+
78
+ def self.sql_query(query)
79
+ builder = Builder::XmlMarkup.new
80
+
81
+ builder.sessionId(SysAid.session_id)
82
+ xml = builder.apiSysObj('xsi:type' => "tns:apiProject")
83
+ xml = builder.condition(query)
84
+ xml
85
+ end
86
+
87
+ def to_xml(include_id = true)
88
+ builder = Builder::XmlMarkup.new
89
+
90
+ builder.sessionId(SysAid.session_id)
91
+ xml = builder.apiSysObj('xsi:type' => "tns:apiProject") { |b|
92
+ b.assignedGroup(self.assigned_group, 'xsi:type' => 'xsd:string')
93
+ b.category(self.category, 'xsi:type' => 'xsd:int')
94
+ b.company(self.company, 'xsi:type' => 'xsd:int')
95
+ #b.custDate1(self.cust_date1.rfc3339, 'xsi:type' => 'xsd:dateTime')
96
+ #b.custDate2(self.cust_date2.rfc3339, 'xsi:type' => 'xsd:dateTime')
97
+ b.custInt1(self.cust_int1, 'xsi:type' => 'xsd:int')
98
+ b.custInt2(self.cust_int2, 'xsi:type' => 'xsd:int')
99
+ b.custList1(self.cust_list1, 'xsi:type' => 'xsd:int')
100
+ b.custList2(self.cust_list2, 'xsi:type' => 'xsd:int')
101
+ b.custNotes(self.cust_notes, 'xsi:type' => 'xsd:string')
102
+ b.custText1(self.cust_text1, 'xsi:type' => 'xsd:string')
103
+ b.custText2(self.cust_text2, 'xsi:type' => 'xsd:string')
104
+ b.customDateFields
105
+ #b.customFields
106
+ b.description(self.description, 'xsi:type' => 'xsd:string')
107
+ b.endTime(self.end_time.rfc3339, 'xsi:type' => 'xsd:dateTime')
108
+ b.id(self.id, 'xsi:type' => 'xsd:int')
109
+ b.incidentTitle(self.incident_title, 'xsi:type' => 'xsd:string')
110
+ b.manager(self.manager, 'xsi:type' => 'xsd:string')
111
+ b.notes(self.notes, 'xsi:type' => 'xsd:string')
112
+ b.progress(self.progress, 'xsi:type' => 'xsd:int')
113
+ b.rawEstimation(self.raw_estimation, 'xsi:type' => 'xsd:int')
114
+ b.requestGroup(self.request_group, 'xsi:type' => 'xsd:string')
115
+ b.startTime(self.start_time.rfc3339, 'xsi:type' => 'xsd:dateTime')
116
+ b.status(self.status, 'xsi:type' => 'xsd:int')
117
+ b.title(self.title, 'xsi:type' => 'xsd:string')
118
+ b.version(self.version, 'xsi:type' => 'xsd:int')
119
+ }
120
+ xml = builder.id(self.id) if include_id
121
+
122
+ xml
123
+ end
124
+
125
+ # Update instance variables to match what is in response
126
+ def set_self_from_response(response)
127
+ self.assigned_group = response[:assign_group]
128
+ self.category = response[:category]
129
+ self.company = response[:company]
130
+ #self.cust_date1 = response[:cust_date1]
131
+ #self.cust_date2 = response[:cust_date2]
132
+ self.cust_int1 = response[:cust_int1]
133
+ self.cust_int2 = response[:cust_int2]
134
+ self.cust_list1 = response[:cust_list1]
135
+ self.cust_list2 = response[:cust_list2]
136
+ self.cust_notes = response[:cust_notes]
137
+ self.cust_text1 = response[:cust_text1]
138
+ self.cust_text2 = response[:cust_text2]
139
+ self.description = response[:description]
140
+ self.end_time = response[:end_time]
141
+ self.id = response[:id]
142
+ self.incident_title = response[:incident_title]
143
+ self.manager = response[:manager]
144
+ self.notes = response[:notes]
145
+ self.progress = response[:progress]
146
+ self.raw_estimation = response[:raw_estimation]
147
+ self.request_group = response[:request_group]
148
+ self.start_time = response[:start_time]
149
+ self.status = response[:status]
150
+ self.title = response[:title]
151
+ self.version = response[:version]
152
+ end
153
+ end
@@ -0,0 +1,151 @@
1
+ require 'date'
2
+
3
+ class SysAid::Task
4
+ attr_accessor :category, :ciid, :cust_date1, :cust_date2, :cust_int1, :cust_int2, :cust_list1, :cust_list2,
5
+ :cust_notes, :custom_date_fields, :custom_fields, :cust_text1, :cust_text2, :description,
6
+ :end_time, :estimation, :id, :notes, :progress, :project_id, :start_time, :status,
7
+ :task_dependency, :task_dependency_type, :title, :version
8
+
9
+ def initialize
10
+ self.start_time = Date.new
11
+ self.end_time = Date.new
12
+ end
13
+
14
+ def self.find_by_id(task_id)
15
+ task = SysAid::Task.new
16
+
17
+ task.id = task_id
18
+
19
+ return nil unless task.refresh
20
+
21
+ return task
22
+ end
23
+
24
+ def self.find_by_project_id(project_id)
25
+ response = SysAid.client.call(:execute_select_query, message: sql_query(project_id))
26
+
27
+ if response.to_hash[:execute_select_query_response][:return]
28
+ return response.to_hash[:execute_select_query_response][:return]
29
+ end
30
+
31
+ return false
32
+ end
33
+
34
+ # Loads the latest task information from the SysAid server
35
+ def refresh
36
+ response = SysAid.client.call(:load_by_string_id, message: to_xml)
37
+
38
+ if response.to_hash[:load_by_string_id_response][:return]
39
+ set_self_from_response(response.to_hash[:load_by_string_id_response][:return])
40
+ return true
41
+ end
42
+
43
+ return false
44
+ end
45
+
46
+ # Saves a task back to the SysAid server
47
+ #
48
+ # Example:
49
+ # >> task_object.save
50
+ # => true
51
+ def save
52
+ if SysAid.logged_in? == false
53
+ raise "You must log in before creating or saving a task."
54
+ end
55
+
56
+ # Save it via the SOAP API
57
+ response = SysAid.client.call(:save, message: to_xml(false))
58
+ if response.to_hash[:save_response][:return]
59
+ return true
60
+ else
61
+ return false
62
+ end
63
+ end
64
+
65
+ # Deletes a task from the SysAid server
66
+ #
67
+ # No return value as SysAid's 'delete' call returns void. No idea why.
68
+ #
69
+ # Example:
70
+ # >> task_object.delete
71
+ # => true
72
+ def delete
73
+ SysAid.client.call(:delete, message: to_xml(false))
74
+ end
75
+
76
+ private
77
+
78
+ def self.sql_query(project_id)
79
+ builder = Builder::XmlMarkup.new
80
+
81
+ builder.sessionId(SysAid.session_id)
82
+ xml = builder.apiSysObj('xsi:type' => "tns:apiTask")
83
+ xml = builder.condition("project_id=#{project_id}")
84
+ xml
85
+ end
86
+
87
+ def to_xml(include_id = true)
88
+ builder = Builder::XmlMarkup.new
89
+
90
+ builder.sessionId(SysAid.session_id)
91
+ xml = builder.apiSysObj('xsi:type' => "tns:apiTask") { |b|
92
+ b.category(self.category, 'xsi:type' => 'xsd:int')
93
+ b.ciId(self.ciid, 'xsi:type' => 'xsd:int')
94
+ #b.custDate1(self.cust_date1.rfc3339, 'xsi:type' => 'xsd:dateTime')
95
+ #b.custDate2(self.cust_date2.rfc3339, 'xsi:type' => 'xsd:dateTime')
96
+ b.custInt1(self.cust_int1, 'xsi:type' => 'xsd:int')
97
+ b.custInt2(self.cust_int2, 'xsi:type' => 'xsd:int')
98
+ b.custList1(self.cust_list1, 'xsi:type' => 'xsd:int')
99
+ b.custList2(self.cust_list2, 'xsi:type' => 'xsd:int')
100
+ b.custNotes(self.cust_notes, 'xsi:type' => 'xsd:string')
101
+ b.custText1(self.cust_text1, 'xsi:type' => 'xsd:string')
102
+ b.custText2(self.cust_text2, 'xsi:type' => 'xsd:string')
103
+ b.customDateFields
104
+ #b.customFields
105
+ b.description(self.description, 'xsi:type' => 'xsd:string')
106
+ b.endTime(self.end_time.rfc3339, 'xsi:type' => 'xsd:dateTime')
107
+ b.estimation(self.estimation, 'xsi:type' => 'xsd:int')
108
+ b.id(self.id, 'xsi:type' => 'xsd:int')
109
+ b.notes(self.notes, 'xsi:type' => 'xsd:string')
110
+ b.progress(self.progress, 'xsi:type' => 'xsd:int')
111
+ b.projectId(self.project_id, 'xsi:type' => 'xsd:int')
112
+ b.startTime(self.start_time.rfc3339, 'xsi:type' => 'xsd:dateTime')
113
+ b.status(self.status, 'xsi:type' => 'xsd:int')
114
+ b.taskDependency(self.task_dependency, 'xsi:type' => 'xsd:int')
115
+ b.taskDependencyType(self.task_dependency_type, 'xsi:type' => 'xsd:int')
116
+ b.title(self.title, 'xsi:type' => 'xsd:string')
117
+ b.version(self.version, 'xsi:type' => 'xsd:int')
118
+ }
119
+ xml = builder.id(self.id) if include_id
120
+
121
+ xml
122
+ end
123
+
124
+ # Update instance variables to match what is in response
125
+ def set_self_from_response(response)
126
+ self.category = response[:category]
127
+ self.ciid = response[:ciid]
128
+ #self.cust_date1 = response[:cust_date1]
129
+ #self.cust_date2 = response[:cust_date2]
130
+ self.cust_int1 = response[:cust_int1]
131
+ self.cust_int2 = response[:cust_int2]
132
+ self.cust_list1 = response[:cust_list1]
133
+ self.cust_list2 = response[:cust_list2]
134
+ self.cust_notes = response[:cust_notes]
135
+ self.cust_text1 = response[:cust_text1]
136
+ self.cust_text2 = response[:cust_text2]
137
+ self.description = response[:description]
138
+ self.end_time = response[:end_time]
139
+ self.estimation = response[:estimation]
140
+ self.id = response[:id]
141
+ self.notes = response[:notes]
142
+ self.progress = response[:progress]
143
+ self.project_id = response[:project_id]
144
+ self.start_time = response[:start_time]
145
+ self.status = response[:status]
146
+ self.task_dependency = response[:task_dependency]
147
+ self.task_dependency_type = response[:task_dependency_type]
148
+ self.title = response[:title]
149
+ self.version = response[:version]
150
+ end
151
+ end
data/lib/sysaid/ticket.rb CHANGED
@@ -25,7 +25,7 @@ class SysAid::Ticket
25
25
  return ticket
26
26
  end
27
27
 
28
- # Loads the latest user information from the SysAid server
28
+ # Loads the latest ticket information from the SysAid server
29
29
  def refresh
30
30
  response = SysAid.client.call(:load_by_string_id, message: to_xml)
31
31
 
@@ -136,10 +136,6 @@ class SysAid::Ticket
136
136
 
137
137
  # Update instance variables to match what is in response
138
138
  def set_self_from_response(response)
139
- pp "---"
140
- pp response
141
- pp "---"
142
-
143
139
  self.agreement = response[:agreement]
144
140
  self.archive = response[:archive]
145
141
  self.assign_counter = response[:assign_counter]
data/lib/sysaid/user.rb CHANGED
@@ -54,18 +54,13 @@ class SysAid::User
54
54
  end
55
55
  end
56
56
 
57
- # Deletes a ticket from the SysAid server
57
+ # Deletes a user from the SysAid server
58
58
  #
59
59
  # Example:
60
- # >> ticket_object.delete
61
- # => true
60
+ # >> user_object.delete
61
+ # => nil
62
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.
63
+ SysAid.client.call(:delete, message: to_xml(false).to_s )
69
64
  end
70
65
 
71
66
  private
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sysaid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christopher Thielen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-29 00:00:00.000000000 Z
11
+ date: 2013-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: savon
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 2.3.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 2.3.0
27
27
  description: Wrapper for the SysAid SOAP API
@@ -31,6 +31,8 @@ extensions: []
31
31
  extra_rdoc_files: []
32
32
  files:
33
33
  - lib/sysaid.rb
34
+ - lib/sysaid/project.rb
35
+ - lib/sysaid/task.rb
34
36
  - lib/sysaid/ticket.rb
35
37
  - lib/sysaid/user.rb
36
38
  homepage: https://github.com/cthielen/ruby-sysaid
@@ -43,17 +45,17 @@ require_paths:
43
45
  - lib
44
46
  required_ruby_version: !ruby/object:Gem::Requirement
45
47
  requirements:
46
- - - '>='
48
+ - - ">="
47
49
  - !ruby/object:Gem::Version
48
50
  version: '0'
49
51
  required_rubygems_version: !ruby/object:Gem::Requirement
50
52
  requirements:
51
- - - '>='
53
+ - - ">="
52
54
  - !ruby/object:Gem::Version
53
55
  version: '0'
54
56
  requirements: []
55
57
  rubyforge_project:
56
- rubygems_version: 2.0.3
58
+ rubygems_version: 2.2.0
57
59
  signing_key:
58
60
  specification_version: 4
59
61
  summary: ruby-sysaid