|
|
|
@ -76,21 +76,30 @@ class Management::SchoolReportService
|
|
|
|
|
|
|
|
|
|
case sort_by_column.to_s
|
|
|
|
|
when 'teacher_count' then
|
|
|
|
|
schools.joins(:teacher_extensions).select("#{base_query_column}, COUNT(*) teacher_count")
|
|
|
|
|
schools.joins('LEFT JOIN user_extensions ue ON ue.school_id = schools.id AND ue.identity = 0')
|
|
|
|
|
.select("#{base_query_column}, COUNT(*) teacher_count")
|
|
|
|
|
when 'student_count' then
|
|
|
|
|
schools.joins(:student_extensions).select("#{base_query_column}, COUNT(*) student_count")
|
|
|
|
|
schools.joins('LEFT JOIN user_extensions ue ON ue.school_id = schools.id AND ue.identity = 1')
|
|
|
|
|
.select("#{base_query_column}, COUNT(*) student_count")
|
|
|
|
|
when 'homework_count' then
|
|
|
|
|
schools.joins(courses: :shixun_homework_commons).select("#{base_query_column}, COUNT(*) homework_count")
|
|
|
|
|
schools.joins('LEFT JOIN courses ON courses.school_id = schools.id')
|
|
|
|
|
.joins('LEFT JOIN homework_commons hc ON shc.course_id = courses.id AND hc.homework_type = 4')
|
|
|
|
|
.select("#{base_query_column}, COUNT(*) homework_count")
|
|
|
|
|
when 'other_homework_count' then
|
|
|
|
|
schools.joins(courses: :other_homework_commons).select("#{base_query_column}, COUNT(*) other_homework_count")
|
|
|
|
|
schools.joins('LEFT JOIN courses ON courses.school_id = schools.id')
|
|
|
|
|
.joins('LEFT JOIN homework_commons hc ON shc.course_id = courses.id AND hc.homework_type IN (1, 3)')
|
|
|
|
|
.select("#{base_query_column}, COUNT(*) other_homework_count")
|
|
|
|
|
when 'course_count' then
|
|
|
|
|
schools.joins('LEFT JOIN courses cs ON cs.school_id = schools.id AND cs.is_delete = 0')
|
|
|
|
|
.select("#{base_query_column}, COUNT(*) course_count")
|
|
|
|
|
when 'shixun_count' then
|
|
|
|
|
schools.joins(teacher_extensions: :user).joins('INNER JOIN shixuns sx ON sx.user_id = users.id AND sx.fork_from IS NULL')
|
|
|
|
|
schools.joins('LEFT JOIN user_extensions ue ON ue.school_id = schools.id AND ue.identity = 0')
|
|
|
|
|
.joins('LEFT JOIN users ON users.id = ue.user_id')
|
|
|
|
|
.joins('LEFT JOIN shixuns sx ON sx.user_id = users.id AND sx.fork_from IS NULL')
|
|
|
|
|
.select("#{base_query_column}, COUNT(*) shixun_count")
|
|
|
|
|
when 'shixun_evaluate_count' then
|
|
|
|
|
schools.joins(:school_report).select("#{base_query_column}, shixun_evaluate_count")
|
|
|
|
|
schools.joins('LEFT JOIN school_reports ON school_reports.school_id = schools.id')
|
|
|
|
|
.select("#{base_query_column}, shixun_evaluate_count")
|
|
|
|
|
when 'nearly_course_time' then
|
|
|
|
|
schools.joins('LEFT JOIN courses cs ON cs.school_id = schools.id AND cs.is_delete = 0')
|
|
|
|
|
.joins('LEFT JOIN course_activities acs ON acs.course_id = cs.id')
|
|
|
|
@ -99,7 +108,8 @@ class Management::SchoolReportService
|
|
|
|
|
schools.joins('LEFT JOIN courses cs ON cs.school_id = schools.id AND cs.is_delete = 0 AND cs.is_end = false')
|
|
|
|
|
.select("#{base_query_column}, COUNT(*) active_course_count")
|
|
|
|
|
else
|
|
|
|
|
schools.joins(:teacher_extensions).select("#{base_query_column}, COUNT(*) teacher_count")
|
|
|
|
|
schools.joins('LEFT JOIN user_extensions ue ON ue.school_id = schools.id AND ue.identity = 0')
|
|
|
|
|
.select("#{base_query_column}, COUNT(*) teacher_count")
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|