Class: Group

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/group.rb

Overview

A set of Participants.

Instance Method Summary collapse

Instance Method Details

#activities_future_by_week(week_number) ⇒ Object



63
64
65
66
67
68
69
70
71
72
73
74
# File 'app/models/group.rb', line 63

def activities_future_by_week(week_number)
  activities = Arel::Table.new(:activities)

  memberships.map do |membership|
    membership
      .participant
      .activities
      .unscheduled_or_in_the_future
      .where(activities[:created_at].gteq(week_start_day(week_number)))
      .where(activities[:created_at].lt(week_end_day(week_number)))
  end.map(&:count).sum
end

#activities_past_by_week(week_number) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
# File 'app/models/group.rb', line 50

def activities_past_by_week(week_number)
  activities = Arel::Table.new(:activities)

  memberships.map do |membership|
    membership
      .participant
      .activities
      .in_the_past
      .where(activities[:created_at].gteq(week_start_day(week_number)))
      .where(activities[:created_at].lt(week_end_day(week_number)))
  end.map(&:count).sum
end

#comments_by_week(week_number) ⇒ Object



89
90
91
92
93
94
95
96
97
98
99
100
# File 'app/models/group.rb', line 89

def comments_by_week(week_number)
  social_networking_comments = Arel::Table.new(:social_networking_comments)

  memberships.map do |membership|
    SocialNetworking::Comment
      .where(participant: membership.participant)
      .where(social_networking_comments[:created_at]
               .gteq(week_start_day(week_number)))
      .where(social_networking_comments[:created_at]
               .lt(week_end_day(week_number)))
  end.map(&:count).sum
end

#goals_by_week(week_number) ⇒ Object



76
77
78
79
80
81
82
83
84
85
86
87
# File 'app/models/group.rb', line 76

def goals_by_week(week_number)
  social_networking_goals = Arel::Table.new(:social_networking_goals)

  memberships.map do |membership|
    SocialNetworking::Goal
      .where(participant: membership.participant)
      .where(social_networking_goals[:created_at]
               .gteq(week_start_day(week_number)))
      .where(social_networking_goals[:created_at]
               .lt(week_end_day(week_number)))
  end.map(&:count).sum
end

#learning_tasksObject



22
23
24
25
26
27
28
29
# File 'app/models/group.rb', line 22

def learning_tasks
  tasks
    .joins(:bit_core_content_module)
    .where(
      Arel::Table.new(:bit_core_content_modules)[:type]
      .eq("ContentModules::LessonModule")
    )
end

#likes_by_week(week_number) ⇒ Object



116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'app/models/group.rb', line 116

def likes_by_week(week_number)
  social_networking_likes =
    Arel::Table.new(:social_networking_likes)

  memberships.map do |membership|
    SocialNetworking::Like
      .where(participant: membership.participant)
      .where(social_networking_likes[:created_at]
               .gteq(week_start_day(week_number)))
      .where(social_networking_likes[:created_at]
               .lt(week_end_day(week_number)))
  end.map(&:count).sum
end

#logins_by_week(week_number) ⇒ Object



31
32
33
34
35
36
# File 'app/models/group.rb', line 31

def logins_by_week(week_number)
  memberships.map do |membership|
    membership
      .logins_by_week(week_number)
  end.inject(:+)
end

#on_the_mind_statements_by_week(week_number) ⇒ Object



102
103
104
105
106
107
108
109
110
111
112
113
114
# File 'app/models/group.rb', line 102

def on_the_mind_statements_by_week(week_number)
  social_networking_on_the_mind_statements =
    Arel::Table.new(:social_networking_on_the_mind_statements)

  memberships.map do |membership|
    SocialNetworking::OnTheMindStatement
      .where(participant: membership.participant)
      .where(social_networking_on_the_mind_statements[:created_at]
               .gteq(week_start_day(week_number)))
      .where(social_networking_on_the_mind_statements[:created_at]
               .lt(week_end_day(week_number)))
  end.map(&:count).sum
end

#thoughts_by_week(week_number) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
# File 'app/models/group.rb', line 38

def thoughts_by_week(week_number)
  thoughts = Arel::Table.new(:thoughts)

  memberships.map do |membership|
    membership
      .participant
      .thoughts
      .where(thoughts[:created_at].gteq(week_start_day(week_number)))
      .where(thoughts[:created_at].lt(week_end_day(week_number)))
  end.map(&:count).sum
end