class OTRS::Ticket

Attributes

age[RW]
archive_flag[RW]
changed[RW]
create_time_unix[RW]
created[RW]
customer_id[RW]
customer_user_id[RW]
escalation_response_time[RW]
escalation_solution_time[RW]
escalation_time[RW]
escalation_update_time[RW]
group_id[RW]
lock[RW]
lock_id[RW]
owner[RW]
owner_id[RW]
priority[RW]
priority_id[RW]
queue[RW]
queue_id[RW]
real_till_time_not_used[RW]
responsible[RW]
responsible_id[RW]
service_id[RW]
slaid[RW]
state[RW]
state_id[RW]
state_type[RW]
ticket_free_key1[RW]
ticket_free_key10[RW]
ticket_free_key11[RW]
ticket_free_key12[RW]
ticket_free_key13[RW]
ticket_free_key14[RW]
ticket_free_key15[RW]
ticket_free_key16[RW]
ticket_free_key2[RW]
ticket_free_key3[RW]
ticket_free_key4[RW]
ticket_free_key5[RW]
ticket_free_key6[RW]
ticket_free_key7[RW]
ticket_free_key8[RW]
ticket_free_key9[RW]
ticket_free_text1[RW]
ticket_free_text10[RW]
ticket_free_text11[RW]
ticket_free_text12[RW]
ticket_free_text13[RW]
ticket_free_text14[RW]
ticket_free_text15[RW]
ticket_free_text16[RW]
ticket_free_text2[RW]
ticket_free_text3[RW]
ticket_free_text4[RW]
ticket_free_text5[RW]
ticket_free_text6[RW]
ticket_free_text7[RW]
ticket_free_text8[RW]
ticket_free_text9[RW]
ticket_free_time1[RW]
ticket_free_time2[RW]
ticket_free_time3[RW]
ticket_free_time4[RW]
ticket_free_time5[RW]
ticket_free_time6[RW]
ticket_id[RW]
ticket_number[RW]
title[RW]
type[RW]
type_id[RW]
unlock_timeout[RW]
until_time[RW]

Public Class Methods

find(id) click to toggle source
# File lib/otrs_connector/otrs/ticket.rb, line 106
def self.find(id)
  data = { 'TicketID' => id, 'UserID' => 1 }
  params = { :object => 'TicketObject', :method => 'TicketGet', :data => data }
  object = self.object_preprocessor(connect(params))
  object.run_callbacks :find do
    object
  end
end
free_text_fields(id) click to toggle source
# File lib/otrs_connector/otrs/ticket.rb, line 129
def self.free_text_fields(id)
  data = {:UserID => 1, :Type => 'TicketFreeText' + id.to_s}
  params = { :object => 'TicketObject', :method => 'TicketFreeTextGet', :data => data }
  a = self.connect(params).first.symbolize_keys
  #b = []
  #a.each do |key,value|
  #  b << [value,key]
  #end
  #return b
end
new(attributes = {}) click to toggle source
# File lib/otrs_connector/otrs/ticket.rb, line 33
def initialize(attributes = {})
  attributes.each do |name, value|
    send("#{name.to_s.underscore.to_sym}=", value)
  end
end
ticket_number_lookup(ticket_id) click to toggle source
# File lib/otrs_connector/otrs/ticket.rb, line 39
def self.ticket_number_lookup(ticket_id)
  data = { 'TicketID' => ticket_id, 'UserID' => 1 }
  params = { :object => 'TicketObject', :method => 'TicketNumberLookup', :data => data }
  connect(params).first
end
where(attributes) click to toggle source
# File lib/otrs_connector/otrs/ticket.rb, line 116
def self.where(attributes)
  attributes['UserID'] = 1
  attributes['Result'] = 'ARRAY'
  data = attributes
  params = { :object => 'TicketObjectCustom', :method => 'TicketSearch', :data => data }
  a = connect(params)
  results = self.superclass::Relation.new
  a.each do |ticket|
    results << self.object_preprocessor(ticket)  #Add find results to array
  end
  results
end

Public Instance Methods

create(attributes) click to toggle source
# File lib/otrs_connector/otrs/ticket.rb, line 51
def create(attributes)
  attributes[:type] ||= 'Incident'
  attributes[:state] ||= 'new'
  attributes[:queue] ||= 'Service Desk'
  attributes[:lock] ||= 'unlock'
  attributes[:priority] ||= '3 normal'
  attributes[:user_id] ||= '1'
  attributes[:owner_id] ||= attributes[:user_id]
  tmp = {}
  attributes.each do |key,value|
    if key == :user_id
      tmp[:UserID] = value
    end
    if key == :owner_id
      tmp[:OwnerID] = value
    end
    if key == :customer_id
      tmp[:CustomerID] = value
    end
    if key != :user_id or key != :owner_id or key != :customer_id
      tmp[key.to_s.camelize.to_sym] = value
    end

  end
  attributes = tmp
  data = attributes
  params = { :object => 'TicketObject', :method => 'TicketCreate', :data => data }
  a = connect(params)
  ticket_id = a.first
  article = OTRS::Ticket::Article.new(
    :ticket_id => ticket_id, 
    :body => attributes[:Body], 
    :email => attributes[:Email], 
    :title => attributes[:Title])
  if article.save
    ticket = self.class.find(ticket_id)
    attributes = ticket.attributes
    attributes.each do |key,value|
      instance_variable_set "@#{key.to_s}", value
    end
    ticket
  else
    ticket.destroy
    raise 'Could not create ticket'
  end
end
destroy() click to toggle source
# File lib/otrs_connector/otrs/ticket.rb, line 98
def destroy
  id = @ticket_id
  data = { 'TicketID' => id, 'UserID' => 1 }
  params = { :object => 'TicketObject', :method => 'TicketDelete', :data => data }
  connect(params)
  "Ticket ID: #{id} deleted"
end
id() click to toggle source
# File lib/otrs_connector/otrs/ticket.rb, line 25
def id
  self.ticket_id
end
name() click to toggle source
# File lib/otrs_connector/otrs/ticket.rb, line 147
def name
  self.title
end
persisted?() click to toggle source
# File lib/otrs_connector/otrs/ticket.rb, line 29
def persisted?
  false
end
save() click to toggle source
# File lib/otrs_connector/otrs/ticket.rb, line 45
def save
  run_callbacks :save do
    self.create(self.attributes)
  end
end
set_free_text_field(id, key, value) click to toggle source
# File lib/otrs_connector/otrs/ticket.rb, line 140
def set_free_text_field(id, key, value)
  data = { :UserID => 1, :Counter => id, :Key => key, :Value => value, :TicketID => self.id }
  params = { :object => 'TicketObject', :method => 'TicketFreeTextSet', :data => data }
  a = self.connect(params)
  if a.first == 1 then return true else return false end
end

Private Instance Methods

strip_characters_from_body() click to toggle source
# File lib/otrs_connector/otrs/ticket.rb, line 152
def strip_characters_from_body
  self.body.gsub(/\r/,'').gsub(/\n/,'\\n')
end