ticket_stats.rb 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. module TicketStats
  2. extend ActiveSupport::Concern
  3. private
  4. def ticket_ids_and_assets(condition, current_user, limit, assets)
  5. tickets = Ticket.search(
  6. limit: limit,
  7. condition: condition,
  8. current_user: current_user,
  9. sort_by: 'created_at',
  10. order_by: 'desc',
  11. )
  12. assets_of_tickets(tickets, assets)
  13. end
  14. def ticket_stats_last_year(condition, access_condition)
  15. volume_by_year = []
  16. now = Time.zone.now
  17. (0..11).each do |month_back|
  18. date_to_check = now - month_back.month
  19. date_start = "#{date_to_check.year}-#{date_to_check.month}-01 00:00:00"
  20. date_end = "#{date_to_check.year}-#{date_to_check.month}-#{date_to_check.end_of_month.day} 00:00:00"
  21. # created
  22. created = Ticket.where('created_at > ? AND created_at < ?', date_start, date_end)
  23. .where(access_condition)
  24. .where(condition)
  25. .count
  26. # closed
  27. closed = Ticket.where('close_at > ? AND close_at < ?', date_start, date_end)
  28. .where(access_condition)
  29. .where(condition)
  30. .count
  31. data = {
  32. month: date_to_check.month,
  33. year: date_to_check.year,
  34. text: Date::MONTHNAMES[date_to_check.month],
  35. created: created,
  36. closed: closed,
  37. }
  38. volume_by_year.push data
  39. end
  40. volume_by_year
  41. end
  42. def assets_of_tickets(tickets, assets)
  43. ticket_ids = []
  44. tickets.each do |ticket|
  45. ticket_ids.push ticket.id
  46. assets = ticket.assets(assets)
  47. end
  48. ticket_ids
  49. end
  50. end