You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
class StatisticSchoolReportTask
|
|
|
|
def call
|
|
|
|
School.find_each do |school|
|
|
|
|
evaluate_count = Game.joins(:challenge)
|
|
|
|
.joins('LEFT JOIN course_members ON course_members.user_id = games.user_id')
|
|
|
|
.joins('LEFT JOIN homework_commons_shixuns hcs ON hcs.shixun_id = challenges.shixun_id')
|
|
|
|
.joins('LEFT JOIN homework_commons hc ON hcs.homework_common_id = hc.id AND hc.homework_type = 4')
|
|
|
|
.joins('LEFT JOIN courses ON hc.course_id = courses.id AND course_members.course_id = courses.id')
|
|
|
|
.where(courses: { school_id: school.id })
|
|
|
|
.sum(:evaluate_count)
|
|
|
|
|
|
|
|
report = SchoolReport.find_or_initialize_by(school_id: school.id)
|
|
|
|
|
|
|
|
report.school_name = school.name
|
|
|
|
report.shixun_evaluate_count = evaluate_count
|
|
|
|
|
|
|
|
report.save
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|