ticket_stats.rb 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. )
  10. assets_of_tickets(tickets, assets)
  11. end
  12. def ticket_stats_last_year(condition, access_condition)
  13. volume_by_year = []
  14. now = Time.zone.now
  15. (0..11).each { |month_back|
  16. date_to_check = now - month_back.month
  17. date_start = "#{date_to_check.year}-#{date_to_check.month}-01 00:00:00"
  18. date_end = "#{date_to_check.year}-#{date_to_check.month}-#{date_to_check.end_of_month.day} 00:00:00"
  19. # created
  20. created = Ticket.where('created_at > ? AND created_at < ?', date_start, date_end)
  21. .where(access_condition)
  22. .where(condition)
  23. .count
  24. # closed
  25. closed = Ticket.where('close_at > ? AND close_at < ?', date_start, date_end)
  26. .where(access_condition)
  27. .where(condition)
  28. .count
  29. data = {
  30. month: date_to_check.month,
  31. year: date_to_check.year,
  32. text: Date::MONTHNAMES[date_to_check.month],
  33. created: created,
  34. closed: closed,
  35. }
  36. volume_by_year.push data
  37. }
  38. volume_by_year
  39. end
  40. def assets_of_tickets(tickets, assets)
  41. ticket_ids = []
  42. tickets.each do |ticket|
  43. ticket_ids.push ticket.id
  44. assets = ticket.assets(assets)
  45. end
  46. ticket_ids
  47. end
  48. end