2016-10-19 03:11:36 +00:00
|
|
|
# Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
|
2015-04-27 23:19:26 +00:00
|
|
|
class Ticket::State < ApplicationModel
|
2015-07-03 17:47:23 +00:00
|
|
|
belongs_to :state_type, class_name: 'Ticket::StateType'
|
2016-06-06 15:26:37 +00:00
|
|
|
belongs_to :next_state, class_name: 'Ticket::State'
|
2015-04-27 23:19:26 +00:00
|
|
|
validates :name, presence: true
|
2013-06-12 15:59:58 +00:00
|
|
|
|
2015-04-27 23:19:26 +00:00
|
|
|
latest_change_support
|
2015-02-25 20:52:14 +00:00
|
|
|
|
2013-08-06 09:23:25 +00:00
|
|
|
=begin
|
|
|
|
|
|
|
|
list tickets by customer
|
|
|
|
|
2017-01-09 14:00:03 +00:00
|
|
|
states = Ticket::State.by_category('open') # open|closed|work_on|work_on_all|pending_reminder|pending_action|merged
|
2013-08-06 09:23:25 +00:00
|
|
|
|
2013-08-06 09:49:56 +00:00
|
|
|
returns:
|
|
|
|
|
|
|
|
state objects
|
|
|
|
|
2013-08-06 09:23:25 +00:00
|
|
|
=end
|
|
|
|
|
2015-04-27 23:19:26 +00:00
|
|
|
def self.by_category(category)
|
|
|
|
if category == 'open'
|
|
|
|
return Ticket::State.where(
|
2016-06-06 15:26:37 +00:00
|
|
|
state_type_id: Ticket::StateType.where(name: ['new', 'open', 'pending reminder', 'pending action'])
|
2015-04-27 23:19:26 +00:00
|
|
|
)
|
2015-09-06 23:54:47 +00:00
|
|
|
elsif category == 'pending_reminder'
|
|
|
|
return Ticket::State.where(
|
2016-06-06 15:26:37 +00:00
|
|
|
state_type_id: Ticket::StateType.where(name: ['pending reminder'])
|
2015-09-06 23:54:47 +00:00
|
|
|
)
|
2015-09-08 07:49:15 +00:00
|
|
|
elsif category == 'pending_action'
|
|
|
|
return Ticket::State.where(
|
2016-06-06 15:26:37 +00:00
|
|
|
state_type_id: Ticket::StateType.where(name: ['pending action'])
|
2015-09-08 07:49:15 +00:00
|
|
|
)
|
2015-09-06 23:54:47 +00:00
|
|
|
elsif category == 'work_on'
|
|
|
|
return Ticket::State.where(
|
2016-06-06 15:26:37 +00:00
|
|
|
state_type_id: Ticket::StateType.where(name: %w(new open))
|
2015-09-06 23:54:47 +00:00
|
|
|
)
|
2015-09-08 06:55:09 +00:00
|
|
|
elsif category == 'work_on_all'
|
|
|
|
return Ticket::State.where(
|
2016-06-06 15:26:37 +00:00
|
|
|
state_type_id: Ticket::StateType.where(name: ['new', 'open', 'pending reminder'])
|
2015-09-08 06:55:09 +00:00
|
|
|
)
|
2015-04-27 23:19:26 +00:00
|
|
|
elsif category == 'closed'
|
|
|
|
return Ticket::State.where(
|
2016-06-06 15:26:37 +00:00
|
|
|
state_type_id: Ticket::StateType.where(name: %w(closed))
|
2015-04-27 23:19:26 +00:00
|
|
|
)
|
2017-01-09 14:00:03 +00:00
|
|
|
elsif category == 'merged'
|
|
|
|
return Ticket::State.where(
|
|
|
|
state_type_id: Ticket::StateType.where(name: %w(merged))
|
|
|
|
)
|
2014-02-03 19:23:00 +00:00
|
|
|
end
|
2016-03-01 14:26:46 +00:00
|
|
|
raise "Unknown category '#{category}'"
|
2015-04-27 23:19:26 +00:00
|
|
|
end
|
2013-08-06 09:49:56 +00:00
|
|
|
|
|
|
|
=begin
|
|
|
|
|
|
|
|
check if state is ignored for escalation
|
|
|
|
|
2015-09-10 19:09:50 +00:00
|
|
|
state = Ticket::State.lookup(name: 'state name')
|
2013-08-06 09:49:56 +00:00
|
|
|
|
2014-06-08 22:01:20 +00:00
|
|
|
result = state.ignore_escalation?
|
2013-08-06 09:49:56 +00:00
|
|
|
|
|
|
|
returns:
|
|
|
|
|
|
|
|
true/false
|
|
|
|
|
|
|
|
=end
|
|
|
|
|
2015-04-27 23:19:26 +00:00
|
|
|
def ignore_escalation?
|
2015-09-10 19:09:50 +00:00
|
|
|
return true if ignore_escalation
|
2015-04-27 23:19:26 +00:00
|
|
|
false
|
2013-08-06 09:49:56 +00:00
|
|
|
end
|
2013-06-12 15:59:58 +00:00
|
|
|
end
|