Module: Central::Support::ActivityConcern::Scopes::ClassMethods
- Defined in:
- lib/central/support/concerns/activity_concern/scopes.rb
Instance Method Summary collapse
Instance Method Details
#fetch_polymorphic(ids, since) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/central/support/concerns/activity_concern/scopes.rb', line 43 def fetch_polymorphic(ids, since) stories = where("subject_type in ('Project', 'Story')"). includes(:user, :subject). projects(ids). since(since).to_a stories += where("subject_type in ('Note', 'Task')"). includes(:user, subject: [:story]). projects(ids). since(since).to_a stories = stories.group_by { |activity| activity.subject_id } [].tap do |new_activities| stories.values.each do |activities| sub_list = activities.sort_by { |story| story.updated_at } first_story = sub_list.shift while sub_list.size > 0 first_story.merge_story!(sub_list.shift) end new_activities << first_story unless first_story.subject_changes.empty? end end end |
#grouped_activities(allowed_projects, since) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/central/support/concerns/activity_concern/scopes.rb', line 66 def grouped_activities(allowed_projects, since) fetch_polymorphic(allowed_projects.pluck(:id), since).group_by { |activity| activity.created_at.beginning_of_day }. map { |date, activities| [ date, activities.group_by { |activity| activity.project_id }. map { |project_id, activities| [ allowed_projects.find { |p| p.id == project_id }, activities.group_by { |activity| activity.subject_destroyed_type || activity.subject_type }. map { |subject_type, activities| [ subject_type, activities.map(&:decorate) ] } ] } ] } end |