Class: Readiness::Zendesk::TicketForms

Inherits:
Client
  • Object
show all
Defined in:
lib/support_readiness/zendesk/ticket_forms.rb

Overview

Defines the class TicketForms within the module Readiness::Zendesk.

Author:

  • Jason Colyer

Since:

  • 1.0.0

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Client

auth_error, bad_request_error, convert_actions, convert_conditions, convert_standard_names_to_ids, convert_ticket_form_agent_conditions, convert_ticket_form_brands, convert_ticket_form_end_user_conditions, convert_ticket_form_names_to_ids, convert_view_names_to_ids, convert_view_restrictions, covert_ticket_form_field_ids, create_package!, erb_renderer, handle_request_error, not_found_error, not_processible_error, put_into_archive, recursively_deflate_directory, timestamp_filename, to_clean_json, to_clean_json_with_key, to_hash, to_nearly_clean_json, to_nearly_clean_json_with_key, to_param_string, write_entries

Constructor Details

#initialize(object = {}) ⇒ TicketForms

Creates a new Readiness::Zendesk::TicketForms instance

Examples:

require 'support_readiness'
Readiness::Zendesk::TicketForms.new

Parameters:

Author:

  • Jason Colyer

Since:

  • 1.0.0



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/support_readiness/zendesk/ticket_forms.rb', line 24

def initialize(object = {})
  @active = object['active']
  @agent_conditions = clean_conditions(object['agent_conditions'])
  @default = object['default']
  @display_name = object['display_name']
  @end_user_conditions = clean_conditions(object['end_user_conditions'])
  @end_user_visible = object['end_user_visible']
  @id = object['id']
  @in_all_brands = object['in_all_brands']
  @name = object['name']
  @position = object['position']
  @raw_display_name = object['raw_display_name']
  @restricted_brand_ids = object['restricted_brand_ids']
  @ticket_field_ids = object['ticket_field_ids']
end

Instance Attribute Details

#activeObject

Since:

  • 1.0.0



13
14
15
# File 'lib/support_readiness/zendesk/ticket_forms.rb', line 13

def active
  @active
end

#agent_conditionsObject

Since:

  • 1.0.0



13
14
15
# File 'lib/support_readiness/zendesk/ticket_forms.rb', line 13

def agent_conditions
  @agent_conditions
end

#defaultObject

Since:

  • 1.0.0



13
14
15
# File 'lib/support_readiness/zendesk/ticket_forms.rb', line 13

def default
  @default
end

#display_nameObject

Since:

  • 1.0.0



13
14
15
# File 'lib/support_readiness/zendesk/ticket_forms.rb', line 13

def display_name
  @display_name
end

#end_user_conditionsObject

Since:

  • 1.0.0



13
14
15
# File 'lib/support_readiness/zendesk/ticket_forms.rb', line 13

def end_user_conditions
  @end_user_conditions
end

#end_user_visibleObject

Since:

  • 1.0.0



13
14
15
# File 'lib/support_readiness/zendesk/ticket_forms.rb', line 13

def end_user_visible
  @end_user_visible
end

#idObject

Since:

  • 1.0.0



13
14
15
# File 'lib/support_readiness/zendesk/ticket_forms.rb', line 13

def id
  @id
end

#in_all_brandsObject

Since:

  • 1.0.0



13
14
15
# File 'lib/support_readiness/zendesk/ticket_forms.rb', line 13

def in_all_brands
  @in_all_brands
end

#nameObject

Since:

  • 1.0.0



13
14
15
# File 'lib/support_readiness/zendesk/ticket_forms.rb', line 13

def name
  @name
end

#positionObject

Since:

  • 1.0.0



13
14
15
# File 'lib/support_readiness/zendesk/ticket_forms.rb', line 13

def position
  @position
end

#raw_display_nameObject

Since:

  • 1.0.0



13
14
15
# File 'lib/support_readiness/zendesk/ticket_forms.rb', line 13

def raw_display_name
  @raw_display_name
end

#restricted_brand_idsObject

Since:

  • 1.0.0



13
14
15
# File 'lib/support_readiness/zendesk/ticket_forms.rb', line 13

def restricted_brand_ids
  @restricted_brand_ids
end

#ticket_field_idsObject

Since:

  • 1.0.0



13
14
15
# File 'lib/support_readiness/zendesk/ticket_forms.rb', line 13

def ticket_field_ids
  @ticket_field_ids
end

Class Method Details

.clone!(client, form) ⇒ Object

Clones a ticket form. Will exit if unsuccessful

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
form = Readiness::Zendesk::TicketForms.find!(client, 47)
clone = Readiness::Zendesk::TicketForms.clone!(client, form)
pp clone.id
# => 48

Parameters:

Returns:

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



326
327
328
329
330
# File 'lib/support_readiness/zendesk/ticket_forms.rb', line 326

def self.clone!(client, form)
  response = client.connection.post "ticket_forms/#{form.id}/clone", { prepend_clone_title: true }.to_json
  handle_request_error(1, 'Zendesk', response.status, { action: 'Clone a ticket form', id: form.id, message: Oj.load(response.body)}) unless response.status == 200
  TicketForms.new(Oj.load(response.body)['ticket_form'])
end

.create!(client, form) ⇒ Object

Creates a ticket form. Will exit if unsuccessful

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
form = Readiness::Zendesk::TicketForms.new
form.name = 'Snowboard Problem'
form.end_user_visible = true
form.display_name = 'Snowboard Damage'
form.position = 9999
form.active = true
form.in_all_brands = false
form.restricted_brand_ids = [1, 4, 6, 12, 34]
form.ticket_field_ids = [2, 3, 4, 32, 33]
form.agent_conditions = []
form.end_user_conditions = []
form.default = false
create = Readiness::Zendesk::TicketForms.create!(client, form)
pp create.id
# => 47

Parameters:

Returns:

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



240
241
242
243
244
# File 'lib/support_readiness/zendesk/ticket_forms.rb', line 240

def self.create!(client, form)
  response = client.connection.post 'ticket_forms', to_clean_json_with_key(form, 'ticket_form')
  handle_request_error(1, 'Zendesk', response.status, { action: 'Create ticket form', message: Oj.load(response.body)}) unless response.status == 201
  TicketForms.new(Oj.load(response.body)['ticket_form'])
end

.delete!(client, form) ⇒ Object

Deletes a ticket form. Will exit if unsuccessful

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
form = Readiness::Zendesk::TicketForms.find!(client, 47)
delete = Readiness::Zendesk::TicketForms.delete!(client, form)
pp delete
# => true

Parameters:

Returns:

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



300
301
302
303
304
# File 'lib/support_readiness/zendesk/ticket_forms.rb', line 300

def self.delete!(client, form)
  response = client.connection.delete "ticket_forms/#{form.id}"
  handle_request_error(1, 'Zendesk', response.status, { action: 'Delete a ticket form', id: form.id, message: Oj.load(response.body)}) unless response.status == 204
  true
end

.find(client, fid) ⇒ Hash

Locates a ticket form within Zendesk. This will not exit on error (except Authentication errors)

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
form = Readiness::Zendesk::TicketForms.find(client, 47)
pp form.name
# => "Snowboard Problem"

Parameters:

  • client (Object)

    An instance of Client

  • fid (Integer)

    The ticket form ID to find

Returns:

  • (Hash)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



98
99
100
101
102
103
104
# File 'lib/support_readiness/zendesk/ticket_forms.rb', line 98

def self.find(client, fid)
  response = client.connection.get("ticket_forms/#{fid}")
  handle_request_error(0, 'Zendesk', response.status,  { action: 'get', id: oid }) unless response.status == 200
  return TicketForms.new(Oj.load(response.body)['ticket_form']) if response.status == 200

  Oj.load(response.body)
end

.find!(client, fid) ⇒ Hash

Locates aa ticket form within Zendesk. This will exit on error

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
form = Readiness::Zendesk::TicketForms.find!(client, 47)
pp form.name
# => "Snowboard Problem"

Parameters:

  • client (Object)

    An instance of Client

  • fid (Integer)

    The ticket form ID to find

Returns:

  • (Hash)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



125
126
127
128
129
# File 'lib/support_readiness/zendesk/ticket_forms.rb', line 125

def self.find!(client, fid)
  response = client.connection.get("ticket_forms/#{fid}")
  handle_request_error(1, 'Zendesk', response.status, { action: 'Find ticket form', id: fid }) unless response.status == 200
  TicketForms.new(Oj.load(response.body)['ticket_form'])
end

.find_by_name(client, name, cache = nil) ⇒ Object

Locates a ticket form within Zendesk by name. Can utilize a cacheh for quicker results

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
form = Readiness::Zendesk::TicketForms.find_by_name(client, 'Snowboard Problem')
pp form.id
# => 47

Parameters:

  • client (Object)

    An instance of Client

  • name (String)

    The ticket form name to look for

  • cache (Array) (defaults to: nil)

    The results of Webhooks#list

Returns:

Author:

  • Jason Colyer

Since:

  • 1.0.12



175
176
177
178
179
180
181
182
# File 'lib/support_readiness/zendesk/ticket_forms.rb', line 175

def self.find_by_name(client, name, cache = nil)
  forms = if cache.nil?
            TicketForms.list(client)
          else
            cache
          end
  forms.detect { |f| f.name == name }
end

.find_by_name!(client, name) ⇒ Object

Locates a ticket field within Zendesk by name. This will exit on error

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
form = Readiness::Zendesk::TicketForms.find_by_name!(client, 'Snowboard Problem')
pp form.id
# => 47

Parameters:

  • client (Object)

    An instance of Client

  • name (String)

    The ticket field name to look for

Returns:

Author:

  • Jason Colyer

Since:

  • 1.0.12



202
203
204
205
206
207
# File 'lib/support_readiness/zendesk/ticket_forms.rb', line 202

def self.find_by_name!(client, name)
  forms = TicketForms.list(client)
  form = forms.detect { |f| f.name == name }
  handle_request_error(1, 'Zendesk', 404, { action: 'Find ticket form', id: name }) if form.nil?
  form
end

.find_many(client, fids) ⇒ Array

Locates up to 100 ticket forms within Zendesk.

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
forms = Readiness::Zendesk::TicketForms.find!(client, [47, 50, 52])
pp forms.first.name
# => "Snowboard Problem"

Parameters:

  • client (Object)

    An instance of Client

  • fids (Array)

    The tikcet form IDs to find

Returns:

  • (Array)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



150
151
152
153
154
# File 'lib/support_readiness/zendesk/ticket_forms.rb', line 150

def self.find_many(client, fids)
  response = client.connection.get("ticket_forms/show_many?ids=#{fids.join(',')}")
  handle_request_error(0, 'Zendesk', response.status,  { action: 'get', id: fids }) unless response.status == 200
  Oj.load(response.body)['ticket_forms'].map { |f| TicketForms.new(f) }
end

.list(client) ⇒ Array

Lists the first 100 ticket forms

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
forms = Readiness::Zendesk::TicketForms.list(client)
pp forms.first.id
# => 47

Parameters:

  • client (Object)

    An instance of Client

Returns:

  • (Array)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



73
74
75
76
77
# File 'lib/support_readiness/zendesk/ticket_forms.rb', line 73

def self.list(client)
  response = client.connection.get('ticket_forms')
  handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
  Oj.load(response.body)['ticket_forms'].map { |f| TicketForms.new(f) }
end

.reorder!(client, fids) ⇒ Array

Reorders the ticket forms. Will exit if unsuccessful

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
form = Readiness::Zendesk::TicketForms.find!(client, 47)
reorder = Readiness::Zendesk::TicketForms.reorder!(client, [2, 23, 46, 50])
pp reorder.count
# => 4

Parameters:

  • client (Object)

    An instance of Client

  • fids (Array)

    The ticket form IDs to reorder (order in Array is important)

Returns:

  • (Array)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



352
353
354
355
356
# File 'lib/support_readiness/zendesk/ticket_forms.rb', line 352

def self.reorder!(client, fids)
  response = client.connection.put 'ticket_forms/reorder', { ticket_form_ids: fids }.to_json
  handle_request_error(1, 'Zendesk', response.status, { action: 'Clone a ticket form', id: form.id, message: Oj.load(response.body)}) unless response.status == 200
  Oj.load(response.body)['ticket_form'].map { |f| TicketForms.new(f) }
end

.update!(client, form) ⇒ Object

Updates a ticket form. Will exit if unsuccessful

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
form = Readiness::Zendesk::TicketForms.find!(client, 47)
form.name = 'Snowboard Fixed'
form.display_name = 'Snowboard has been fixed'
form.position = 9999
form.active = true
form.in_all_brands = true
form.restricted_brand_ids = []
form.agent_conditions = []
form.end_user_conditions = []
update = Readiness::Zendesk::TicketForms.update!(client, form)
pp update.name
# => "Snowboard Fixed"

Parameters:

Returns:

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



274
275
276
277
278
# File 'lib/support_readiness/zendesk/ticket_forms.rb', line 274

def self.update!(client, form)
  response = client.connection.put "ticket_forms/#{form.id}", to_clean_json_with_key(form, 'ticket_form')
  handle_request_error(1, 'Zendesk', response.status, { action: 'Update ticket form', message: Oj.load(response.body)}) unless response.status == 200
  TicketForms.new(Oj.load(response.body)['ticket_form'])
end

Instance Method Details

#clean_conditions(conditions) ⇒ Hash

Removes unneeded values from the conditions variable on a Readiness::Zendesk::TicketForms object

Parameters:

  • conditions (Hash)

Returns:

  • (Hash)

Author:

  • Jason Colyer

Since:

  • 1.0.12



47
48
49
50
51
52
53
# File 'lib/support_readiness/zendesk/ticket_forms.rb', line 47

def clean_conditions(conditions)
  return nil if conditions.nil?
  return [] if conditions.count.zero?

  conditions.map { |c| c.delete('parent_field_type') }
  conditions
end