Class: Mumuki::Classroom::Student
Constant Summary
CourseMember::MANDATORY_FIELDS
Class Method Summary
collapse
Instance Method Summary
collapse
#as_user
Methods inherited from Document
inherited, whitelist_attributes
Class Method Details
.attach_all_by!(uids, query) ⇒ Object
91
92
93
94
95
96
|
# File 'lib/mumuki/classroom/models/student.rb', line 91
def attach_all_by!(uids, query)
where(query).in(uid: uids).unset(:detached, :detached_at)
criteria = query.merge('student.uid': {'$in': uids})
Mumuki::Classroom::Assignment.attach_all_by! criteria
Mumuki::Classroom::GuideProgress.attach_all_by! criteria
end
|
.detach_all_by!(uids, query) ⇒ Object
84
85
86
87
88
89
|
# File 'lib/mumuki/classroom/models/student.rb', line 84
def detach_all_by!(uids, query)
where(query).in(uid: uids).update_all(detached: true, detached_at: Time.now)
criteria = query.merge('student.uid': {'$in': uids})
Mumuki::Classroom::Assignment.detach_all_by! criteria
Mumuki::Classroom::GuideProgress.detach_all_by! criteria
end
|
.last_updated_student_by(query) ⇒ Object
80
81
82
|
# File 'lib/mumuki/classroom/models/student.rb', line 80
def last_updated_student_by(query)
where(query).ne(detached: true).order_by(updated_at: :desc).first
end
|
.report(criteria, &block) ⇒ Object
72
73
74
|
# File 'lib/mumuki/classroom/models/student.rb', line 72
def report(criteria, &block)
where(criteria).select(&block).as_json(only: [:first_name, :last_name, :email, :created_at, :detached_at])
end
|
.uid_field ⇒ Object
98
99
100
|
# File 'lib/mumuki/classroom/models/student.rb', line 98
def uid_field
:uid
end
|
.update_all_stats(options) ⇒ Object
76
77
78
|
# File 'lib/mumuki/classroom/models/student.rb', line 76
def update_all_stats(options)
where(options).each(&:update_all_stats)
end
|
Instance Method Details
#as_submission_json ⇒ Object
67
68
69
|
# File 'lib/mumuki/classroom/models/student.rb', line 67
def as_submission_json
as_json(only: i(uid name email image_url social_id last_name first_name)).compact
end
|
#attach! ⇒ Object
51
52
53
54
55
|
# File 'lib/mumuki/classroom/models/student.rb', line 51
def attach!
unset :detached, :detached_at
Mumuki::Classroom::Assignment.attach_all_by! sub_student_query(uid)
Mumuki::Classroom::GuideProgress.attach_all_by! sub_student_query(uid)
end
|
#course_name ⇒ Object
14
15
16
|
# File 'lib/mumuki/classroom/models/student.rb', line 14
def course_name
course.to_mumukit_slug.course
end
|
#destroy_cascade! ⇒ Object
18
19
20
21
|
# File 'lib/mumuki/classroom/models/student.rb', line 18
def destroy_cascade!
destroy_progress!
destroy!
end
|
#destroy_progress! ⇒ Object
23
24
25
|
# File 'lib/mumuki/classroom/models/student.rb', line 23
def destroy_progress!
destroy_progress_for_query!(sub_student_query uid)
end
|
#destroy_progress_for_guide!(guide) ⇒ Object
27
28
29
|
# File 'lib/mumuki/classroom/models/student.rb', line 27
def destroy_progress_for_guide!(guide)
destroy_progress_for_query!(sub_student_query(uid).merge 'guide.slug': guide.slug)
end
|
#destroy_progress_for_query!(query) ⇒ Object
31
32
33
34
|
# File 'lib/mumuki/classroom/models/student.rb', line 31
def destroy_progress_for_query!(query)
Mumuki::Classroom::GuideProgress.destroy_all_by!(query)
Mumuki::Classroom::Assignment.destroy_all_by!(query)
end
|
#detach! ⇒ Object
45
46
47
48
49
|
# File 'lib/mumuki/classroom/models/student.rb', line 45
def detach!
update_attributes! detached: true, detached_at: Time.now
Mumuki::Classroom::Assignment.detach_all_by! sub_student_query(uid)
Mumuki::Classroom::GuideProgress.detach_all_by! sub_student_query(uid)
end
|
#sub_student_query(uid) ⇒ Object
41
42
43
|
# File 'lib/mumuki/classroom/models/student.rb', line 41
def sub_student_query(uid)
{'organization': organization, 'course': course, 'student.uid': uid}
end
|
#transfer_to!(organization, course) ⇒ Object
57
58
59
60
61
|
# File 'lib/mumuki/classroom/models/student.rb', line 57
def transfer_to!(organization, course)
Mumuki::Classroom::Assignment.transfer_all_by! sub_student_query(uid), organization, course
Mumuki::Classroom::GuideProgress.transfer_all_by! sub_student_query(uid), organization, course
update_attributes! organization: organization, course: course
end
|
#update_all_stats ⇒ Object
36
37
38
39
|
# File 'lib/mumuki/classroom/models/student.rb', line 36
def update_all_stats
all_stats = Mumuki::Classroom::Assignment.stats_by(sub_student_query uid)
update_attributes!(stats: all_stats)
end
|
#update_last_assignment_for ⇒ Object
63
64
65
|
# File 'lib/mumuki/classroom/models/student.rb', line 63
def update_last_assignment_for
update_attributes!(last_assignment: Mumuki::Classroom::GuideProgress.last_assignment_by(sub_student_query uid))
end
|