trabajo-afectivo/lib/stats/ticket_escalation.rb

45 lines
1 KiB
Ruby
Raw Normal View History

2015-09-06 22:42:11 +00:00
# Copyright (C) 2012-2013 Zammad Foundation, http://zammad-foundation.org/
class Stats::TicketEscalation
def self.generate(user)
2015-09-06 23:17:54 +00:00
open_state_ids = Ticket::State.by_category('open').map(&:id)
2015-09-06 22:42:11 +00:00
# get users groups
group_ids = user.groups.map(&:id)
# owned tickets
own_escalated = Ticket.where(
2015-09-06 23:17:54 +00:00
'owner_id = ? AND group_id IN (?) AND state_id IN (?) AND escalation_time < ?', user.id, group_ids, open_state_ids, Time.zone.now
2015-09-06 22:42:11 +00:00
).count
# all tickets
all_escalated = Ticket.where(
2015-09-06 23:17:54 +00:00
'group_id IN (?) AND state_id IN (?) AND escalation_time < ?', group_ids, open_state_ids, Time.zone.now
2015-09-06 22:42:11 +00:00
).count
average = '-'
state = 'supergood'
2015-09-06 23:52:54 +00:00
if own_escalated == 0
state = 'supergood'
elsif own_escalated > 1
state = 'good'
elsif own_escalated > 2
state = 'ok'
elsif own_escalated > 5
state = 'bad'
elsif own_escalated > 10
state = 'superbad'
end
2015-09-06 22:42:11 +00:00
{
average: average,
state: state,
own: own_escalated,
total: all_escalated,
}
end
end