ticket_escalation.rb 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. # Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
  2. class Stats::TicketEscalation
  3. def self.generate(user)
  4. open_state_ids = Ticket::State.by_category(:open).pluck(:id)
  5. # get users groups
  6. group_ids = user.group_ids_access('full')
  7. # owned tickets
  8. own_escalated = Ticket.where(
  9. 'owner_id = ? AND group_id IN (?) AND state_id IN (?) AND escalation_at < ?', user.id, group_ids, open_state_ids, Time.zone.now
  10. ).count
  11. # all tickets
  12. all_escalated = Ticket.where(
  13. 'group_id IN (?) AND state_id IN (?) AND escalation_at < ?', group_ids, open_state_ids, Time.zone.now
  14. ).count
  15. average = '-'
  16. state = 'supergood'
  17. state = if own_escalated.zero?
  18. 'supergood'
  19. elsif own_escalated <= 1
  20. 'good'
  21. elsif own_escalated <= 4
  22. 'ok'
  23. else
  24. 'bad'
  25. end
  26. {
  27. used_for_average: own_escalated,
  28. average_per_agent: average,
  29. state: state,
  30. own: own_escalated,
  31. total: all_escalated,
  32. }
  33. end
  34. def self.average_state(result, _user_id)
  35. result
  36. end
  37. end