KayakoClient 1.0.2 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/kayako_client.rb +31 -0
- data/lib/kayako_client/base.rb +23 -0
- data/lib/kayako_client/custom_field.rb +14 -0
- data/lib/kayako_client/department.rb +18 -3
- data/lib/kayako_client/http/http.rb +14 -0
- data/lib/kayako_client/http/http_backend.rb +14 -0
- data/lib/kayako_client/http/http_client.rb +14 -0
- data/lib/kayako_client/http/http_response.rb +14 -0
- data/lib/kayako_client/http/net_http.rb +14 -0
- data/lib/kayako_client/knowledgebase_article.rb +131 -0
- data/lib/kayako_client/knowledgebase_attachment.rb +59 -0
- data/lib/kayako_client/knowledgebase_category.rb +71 -0
- data/lib/kayako_client/knowledgebase_comment.rb +32 -0
- data/lib/kayako_client/mixins/api.rb +14 -0
- data/lib/kayako_client/mixins/article_client.rb +76 -0
- data/lib/kayako_client/mixins/attachment.rb +16 -1
- data/lib/kayako_client/mixins/authentication.rb +14 -0
- data/lib/kayako_client/mixins/client.rb +300 -0
- data/lib/kayako_client/mixins/comment_object.rb +102 -0
- data/lib/kayako_client/mixins/convert_api.rb +39 -0
- data/lib/kayako_client/mixins/creator_api.rb +44 -0
- data/lib/kayako_client/mixins/knowledgebase_article_api.rb +69 -0
- data/lib/kayako_client/mixins/knowledgebase_category_client.rb +51 -0
- data/lib/kayako_client/mixins/logger.rb +14 -0
- data/lib/kayako_client/mixins/news_category_client.rb +51 -0
- data/lib/kayako_client/mixins/news_client.rb +51 -0
- data/lib/kayako_client/mixins/object.rb +24 -7
- data/lib/kayako_client/mixins/post_client.rb +14 -0
- data/lib/kayako_client/mixins/staff_visibility_api.rb +14 -0
- data/lib/kayako_client/mixins/ticket_api.rb +14 -0
- data/lib/kayako_client/mixins/ticket_client.rb +14 -0
- data/lib/kayako_client/mixins/troubleshooter_step_api.rb +69 -0
- data/lib/kayako_client/mixins/troubleshooter_step_client.rb +76 -0
- data/lib/kayako_client/mixins/user_visibility_api.rb +14 -0
- data/lib/kayako_client/news_category.rb +29 -0
- data/lib/kayako_client/news_comment.rb +32 -0
- data/lib/kayako_client/news_item.rb +81 -0
- data/lib/kayako_client/news_subscriber.rb +33 -0
- data/lib/kayako_client/staff.rb +14 -0
- data/lib/kayako_client/staff_group.rb +14 -0
- data/lib/kayako_client/ticket.rb +24 -1
- data/lib/kayako_client/ticket_attachment.rb +18 -0
- data/lib/kayako_client/ticket_count.rb +14 -0
- data/lib/kayako_client/ticket_custom_field.rb +14 -0
- data/lib/kayako_client/ticket_note.rb +14 -1
- data/lib/kayako_client/ticket_post.rb +15 -0
- data/lib/kayako_client/ticket_priority.rb +14 -0
- data/lib/kayako_client/ticket_status.rb +14 -0
- data/lib/kayako_client/ticket_time_track.rb +14 -0
- data/lib/kayako_client/ticket_type.rb +14 -0
- data/lib/kayako_client/troubleshooter_attachment.rb +68 -0
- data/lib/kayako_client/troubleshooter_category.rb +51 -0
- data/lib/kayako_client/troubleshooter_comment.rb +32 -0
- data/lib/kayako_client/troubleshooter_step.rb +100 -0
- data/lib/kayako_client/user.rb +42 -0
- data/lib/kayako_client/user_group.rb +14 -0
- data/lib/kayako_client/user_organization.rb +14 -0
- data/lib/kayako_client/xml/lib_xml.rb +14 -0
- data/lib/kayako_client/xml/rexml_document.rb +14 -0
- data/lib/kayako_client/xml/xml.rb +14 -0
- data/lib/kayako_client/xml/xml_backend.rb +14 -0
- data/test/test_attachment.rb +77 -0
- data/test/test_client.rb +191 -0
- data/test/test_configuration.rb +110 -0
- data/test/test_count.rb +162 -0
- data/test/test_custom_field.rb +86 -0
- data/test/test_department.rb +136 -0
- data/test/test_http.rb +34 -0
- data/test/test_knowledgebase.rb +155 -0
- data/test/test_news.rb +117 -0
- data/test/test_note.rb +64 -0
- data/test/test_post.rb +64 -0
- data/test/test_priority.rb +46 -0
- data/test/test_properties.rb +114 -0
- data/test/test_staff.rb +77 -0
- data/test/test_status.rb +52 -0
- data/test/test_ticket.rb +152 -0
- data/test/test_ticket_custom_field.rb +193 -0
- data/test/test_time_track.rb +68 -0
- data/test/test_troubleshooter.rb +106 -0
- data/test/test_type.rb +65 -0
- data/test/test_user.rb +95 -0
- data/test/test_xml.rb +183 -0
- metadata +89 -42
data/lib/kayako_client/ticket.rb
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
1
15
|
require 'kayako_client/department'
|
2
16
|
|
3
17
|
require 'kayako_client/staff'
|
@@ -92,7 +106,9 @@ module KayakoClient
|
|
92
106
|
property :auto_user_id, :boolean, :new => true
|
93
107
|
property :staff_id, :integer, :new => true
|
94
108
|
property :type, :symbol, :new => true, :in => TICKET_TYPES
|
95
|
-
property :template_group_id, :integer
|
109
|
+
property :template_group_id, :integer, :set => :templategroup
|
110
|
+
property :template_group_name, :string, :set => :templategroup
|
111
|
+
property :ignore_autoresponder, :boolean, :new => true
|
96
112
|
|
97
113
|
property :work_flow, :object, :class => TicketWorkflow
|
98
114
|
property :watcher, [ :object ], :class => TicketWatcher
|
@@ -107,6 +123,10 @@ module KayakoClient
|
|
107
123
|
associate :organization, :user_organization_id, UserOrganization
|
108
124
|
associate :owner_staff, :owner_staff_id, Staff
|
109
125
|
|
126
|
+
if method_defined?(:posts)
|
127
|
+
remove_method(:posts)
|
128
|
+
end
|
129
|
+
|
110
130
|
def posts
|
111
131
|
if instance_variable_defined?(:@posts)
|
112
132
|
instance_variable_get(:@posts)
|
@@ -235,6 +255,9 @@ module KayakoClient
|
|
235
255
|
raise ArgumentError, ":auto_user_id, :user_id or :staff_id is required"
|
236
256
|
end
|
237
257
|
end
|
258
|
+
if params.has_key?(:template_group_id) && params.has_key?(:template_group_name)
|
259
|
+
raise ArgumentError, "Only one of :template_group_id or :template_group_name should be used"
|
260
|
+
end
|
238
261
|
end
|
239
262
|
|
240
263
|
end
|
@@ -1,3 +1,17 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
1
15
|
require 'kayako_client/mixins/ticket_api'
|
2
16
|
require 'kayako_client/mixins/attachment'
|
3
17
|
|
@@ -23,6 +37,10 @@ module KayakoClient
|
|
23
37
|
associate :ticket, :ticket_id, Ticket
|
24
38
|
associate :ticket_post, :ticket_post_id, TicketPost
|
25
39
|
|
40
|
+
if method_defined?(:contents)
|
41
|
+
remove_method(:contents)
|
42
|
+
end
|
43
|
+
|
26
44
|
def contents
|
27
45
|
if instance_variable_defined?(:@contents)
|
28
46
|
instance_variable_get(:@contents)
|
@@ -1,3 +1,17 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
1
15
|
require 'kayako_client/ticket_status'
|
2
16
|
require 'kayako_client/ticket_type'
|
3
17
|
require 'kayako_client/staff'
|
@@ -1,3 +1,17 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
1
15
|
require 'base64'
|
2
16
|
require 'time'
|
3
17
|
|
@@ -1,7 +1,20 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
1
15
|
require 'kayako_client/mixins/ticket_api'
|
2
16
|
|
3
17
|
require 'kayako_client/staff'
|
4
|
-
require 'kayako_client/ticket'
|
5
18
|
require 'kayako_client/user'
|
6
19
|
require 'kayako_client/user_organization'
|
7
20
|
|
@@ -1,3 +1,17 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
1
15
|
require 'kayako_client/mixins/ticket_api'
|
2
16
|
|
3
17
|
require 'kayako_client/staff'
|
@@ -31,6 +45,7 @@ module KayakoClient
|
|
31
45
|
property :ticket_id, :integer, :new => true, :required => :post
|
32
46
|
property :subject, :string, :new => true, :required => :post
|
33
47
|
property :ticket_post_id, :integer, :readonly => true
|
48
|
+
property :is_private, :boolean, :new => true, :required => :post
|
34
49
|
|
35
50
|
associate :user, :user_id, User
|
36
51
|
associate :staff, :staff_id, Staff
|
@@ -1,3 +1,17 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
1
15
|
require 'kayako_client/mixins/user_visibility_api'
|
2
16
|
|
3
17
|
module KayakoClient
|
@@ -1,3 +1,17 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
1
15
|
require 'kayako_client/department'
|
2
16
|
|
3
17
|
module KayakoClient
|
@@ -1,3 +1,17 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
1
15
|
require 'kayako_client/mixins/ticket_api'
|
2
16
|
|
3
17
|
module KayakoClient
|
@@ -1,3 +1,17 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
1
15
|
require 'kayako_client/mixins/user_visibility_api'
|
2
16
|
|
3
17
|
require 'kayako_client/department'
|
@@ -0,0 +1,68 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
15
|
+
require 'kayako_client/mixins/troubleshooter_step_api'
|
16
|
+
|
17
|
+
require 'kayako_client/troubleshooter_step'
|
18
|
+
|
19
|
+
module KayakoClient
|
20
|
+
class TroubleshooterAttachment < KayakoClient::Troubleshooter
|
21
|
+
include KayakoClient::TroubleshooterStepAPI
|
22
|
+
include KayakoClient::Attachment
|
23
|
+
|
24
|
+
path '/Troubleshooter/Attachment'
|
25
|
+
|
26
|
+
supports :all, :get, :post, :delete
|
27
|
+
|
28
|
+
property :id, :integer, :readonly => true
|
29
|
+
property :troubleshooter_step_id, :integer, :required => :post
|
30
|
+
property :file_name, :string, :required => :post
|
31
|
+
property :file_size, :integer, :readonly => true
|
32
|
+
property :file_type, :string, :readonly => true
|
33
|
+
property :date_line, :date, :readonly => true
|
34
|
+
property :contents, :binary, :required => :post, :new => true
|
35
|
+
property :link, :string, :readonly => true
|
36
|
+
|
37
|
+
associate :troubleshooter_step, :troubleshooter_step_id, TroubleshooterStep
|
38
|
+
|
39
|
+
if method_defined?(:contents)
|
40
|
+
remove_method(:contents)
|
41
|
+
end
|
42
|
+
|
43
|
+
def contents
|
44
|
+
if instance_variable_defined?(:@contents)
|
45
|
+
instance_variable_get(:@contents)
|
46
|
+
else
|
47
|
+
if !new? && id && id > 0
|
48
|
+
if troubleshooter_step_id.nil? && !link.nil? && link.match(%r{/[0-9]+/([0-9]+)/([0-9]+)/?$}) && $2.to_i == id
|
49
|
+
troubleshooter_step_id = $1.to_i
|
50
|
+
end
|
51
|
+
if troubleshooter_step_id && troubleshooter_step_id > 0
|
52
|
+
logger.debug "contents are missing - trying to reload" if logger
|
53
|
+
if reload!(:e => "#{self.class.path}/#{troubleshooter_step_id.to_i}/#{id.to_i}") && instance_variable_defined?(:@contents)
|
54
|
+
instance_variable_get(:@contents)
|
55
|
+
else
|
56
|
+
instance_variable_set(:@contents, nil)
|
57
|
+
end
|
58
|
+
else
|
59
|
+
nil
|
60
|
+
end
|
61
|
+
else
|
62
|
+
nil
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
15
|
+
require 'kayako_client/mixins/convert_api'
|
16
|
+
|
17
|
+
require 'kayako_client/staff'
|
18
|
+
require 'kayako_client/user_group'
|
19
|
+
require 'kayako_client/staff_group'
|
20
|
+
|
21
|
+
module KayakoClient
|
22
|
+
class TroubleshooterCategory < KayakoClient::Troubleshooter
|
23
|
+
include KayakoClient::ConvertAPI
|
24
|
+
include KayakoClient::UserVisibilityAPI
|
25
|
+
include KayakoClient::StaffVisibilityAPI
|
26
|
+
|
27
|
+
path '/Troubleshooter/Category'
|
28
|
+
|
29
|
+
TYPE_GLOBAL = 1
|
30
|
+
TYPE_PUBLIC = 2
|
31
|
+
TYPE_PRIVATE = 3
|
32
|
+
|
33
|
+
property :id, :integer, :readonly => true
|
34
|
+
property :staff_id, :integer, :required => :post, :new => true
|
35
|
+
property :staff_name, :string, :readonly => true
|
36
|
+
property :title, :string, :required => :post
|
37
|
+
property :description, :string
|
38
|
+
property :category_type, :integer, :required => :post, :range => 1..3
|
39
|
+
property :display_order, :integer
|
40
|
+
property :views, :integer, :readonly => true
|
41
|
+
property :user_visibility_custom, :boolean
|
42
|
+
property :user_group_ids, [ :integer ], :get => :usergroupidlist, :set => :usergroupidlist, :condition => { :user_visibility_custom => true }
|
43
|
+
property :staff_visibility_custom, :boolean
|
44
|
+
property :staff_group_ids, [ :integer ], :get => :staffgroupidlist, :set => :staffgroupidlist, :condition => { :staff_visibility_custom => true }
|
45
|
+
|
46
|
+
associate :staff, :staff_id, Staff
|
47
|
+
associate :user_groups, :user_group_ids, UserGroup
|
48
|
+
associate :staff_groups, :staff_group_ids, StaffGroup
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
15
|
+
require 'kayako_client/mixins/creator_api'
|
16
|
+
require 'kayako_client/mixins/comment_object'
|
17
|
+
|
18
|
+
require 'kayako_client/troubleshooter_step'
|
19
|
+
|
20
|
+
module KayakoClient
|
21
|
+
class TroubleshooterComment < KayakoClient::Troubleshooter
|
22
|
+
include KayakoClient::CreatorAPI
|
23
|
+
include KayakoClient::CommentObject
|
24
|
+
|
25
|
+
path '/Troubleshooter/Comment'
|
26
|
+
|
27
|
+
property :troubleshooter_step_id, :integer, :required => :post
|
28
|
+
|
29
|
+
associate :troubleshooter_step, :troubleshooter_step_id, TroubleshooterStep
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
15
|
+
require 'kayako_client/mixins/convert_api'
|
16
|
+
|
17
|
+
require 'kayako_client/troubleshooter_category'
|
18
|
+
|
19
|
+
require 'kayako_client/staff'
|
20
|
+
require 'kayako_client/department'
|
21
|
+
require 'kayako_client/ticket_type'
|
22
|
+
require 'kayako_client/ticket_priority'
|
23
|
+
|
24
|
+
module KayakoClient
|
25
|
+
|
26
|
+
class TroubleshooterAttachment < KayakoClient::Troubleshooter
|
27
|
+
end
|
28
|
+
|
29
|
+
class TroubleshooterStep < KayakoClient::Troubleshooter
|
30
|
+
include KayakoClient::ConvertAPI
|
31
|
+
include KayakoClient::TroubleshooterStepClient
|
32
|
+
|
33
|
+
path '/Troubleshooter/Step'
|
34
|
+
|
35
|
+
STATUS_PUBLISHED = 1
|
36
|
+
STATUS_DRAFT = 2
|
37
|
+
|
38
|
+
property :id, :integer, :readonly => true
|
39
|
+
property :category_id, :integer, :required => :post, :new => true
|
40
|
+
property :staff_id, :integer, :required => :post, :new => true
|
41
|
+
property :staff_name, :string, :readonly => true
|
42
|
+
property :subject, :string, :required => :post
|
43
|
+
property :edited, :boolean, :readonly => true
|
44
|
+
property :edited_staff_id, :integer, :required => :put
|
45
|
+
property :edited_staff_name, :string, :readonly => true
|
46
|
+
property :display_order, :integer
|
47
|
+
property :views, :integer, :readonly => true
|
48
|
+
property :allow_comments, :boolean
|
49
|
+
property :has_attachments, :boolean, :readonly => true
|
50
|
+
property :parent_step_ids, [ :integer ], :get => :parentsteps, :set => :parentstepidlist
|
51
|
+
property :child_step_ids, [ :integer ], :readonly => true, :get => :childsteps
|
52
|
+
property :redirect_tickets, :boolean, :readonly => true
|
53
|
+
property :ticket_subject, :string
|
54
|
+
property :redirect_department_id, :integer
|
55
|
+
property :ticket_type_id, :integer
|
56
|
+
property :ticket_priority_id, :integer, :get => :priorityid
|
57
|
+
property :contents, :string, :required => :post
|
58
|
+
property :enable_ticket_redirection, :boolean
|
59
|
+
property :step_status, :integer, :range => 1..2
|
60
|
+
|
61
|
+
property :attachments, [ :object ], :class => TroubleshooterAttachment
|
62
|
+
|
63
|
+
associate :category, :category_id, TroubleshooterCategory
|
64
|
+
associate :staff, :staff_id, Staff
|
65
|
+
associate :edited_staff, :edited_staff_id, Staff
|
66
|
+
associate :parent_steps, :parent_step_ids, TroubleshooterStep
|
67
|
+
associate :child_steps, :child_step_ids, TroubleshooterStep
|
68
|
+
associate :redirect_department, :redirect_department_id, Department
|
69
|
+
associate :ticket_type, :ticket_type_id, TicketType
|
70
|
+
associate :priority, :ticket_priority_id, TicketPriority
|
71
|
+
|
72
|
+
def has_parent_steps?
|
73
|
+
!parent_step_ids.nil? && parent_step_ids.size > 0
|
74
|
+
end
|
75
|
+
|
76
|
+
def has_child_steps?
|
77
|
+
!child_step_ids.nil? && child_step_ids.size > 0
|
78
|
+
end
|
79
|
+
|
80
|
+
def in_step?(step)
|
81
|
+
step.respond_to?(:to_i) && !parent_step_ids.nil? && parent_step_ids.include?(step.to_i)
|
82
|
+
end
|
83
|
+
|
84
|
+
def has_step?(step)
|
85
|
+
step.respond_to?(:to_i) && !child_step_ids.nil? && child_step_ids.include?(step.to_i)
|
86
|
+
end
|
87
|
+
|
88
|
+
private
|
89
|
+
|
90
|
+
def validate(method, params)
|
91
|
+
if method == :put
|
92
|
+
unless changes.include?(:edited_staff_id) && params[:edited_staff_id].to_i > 0
|
93
|
+
raise ArgumentError, ":edited_staff_id is required"
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|