|
|
|
@ -5,7 +5,7 @@ class Admins::SchoolBaseStatisticService < ApplicationService
|
|
|
|
|
|
|
|
|
|
sort_columns :student_count, :teacher_count, :course_count, :course_group_count,
|
|
|
|
|
:attachment_count, :video_count, :normal_work_count, :shixun_work_count, :shixun_evaluate_count,
|
|
|
|
|
:student_works_num, :exercise_count, default_direction: :desc
|
|
|
|
|
:student_work_count, :exercise_count, default_direction: :desc
|
|
|
|
|
|
|
|
|
|
def initialize(params)
|
|
|
|
|
@params = params
|
|
|
|
@ -77,17 +77,17 @@ class Admins::SchoolBaseStatisticService < ApplicationService
|
|
|
|
|
case sort_by_column.to_s
|
|
|
|
|
when 'teacher_count' then
|
|
|
|
|
schools.joins('LEFT JOIN user_extensions ue ON ue.school_id = schools.id AND ue.identity = 0')
|
|
|
|
|
.select("#{base_query_column}, COUNT(*) teacher_count")
|
|
|
|
|
.select("#{base_query_column}, COUNT(ue.id) teacher_count")
|
|
|
|
|
when 'student_count' then
|
|
|
|
|
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 'course_count' then
|
|
|
|
|
schools.joins('LEFT JOIN courses ON courses.school_id = schools.id AND courses.is_delete = false')
|
|
|
|
|
.select("#{base_query_column}, COUNT(*) course_count")
|
|
|
|
|
schools.joins('LEFT JOIN courses ON courses.school_id = schools.id AND courses.is_delete = 0')
|
|
|
|
|
.select("#{base_query_column}, COUNT(courses.id) course_count")
|
|
|
|
|
when 'course_group_count' then
|
|
|
|
|
schools.joins("LEFT JOIN courses ON courses.school_id = schools.id AND courses.is_delete = false
|
|
|
|
|
schools.joins("LEFT JOIN courses ON courses.school_id = schools.id AND courses.is_delete = 0
|
|
|
|
|
LEFT JOIN course_groups ON course_groups.course_id = courses.id")
|
|
|
|
|
.select("#{base_query_column}, COUNT(*) course_group_count")
|
|
|
|
|
.select("#{base_query_column}, COUNT(course_groups.id) course_group_count")
|
|
|
|
|
when 'attachment_count' then
|
|
|
|
|
schools.joins("LEFT JOIN courses cs ON cs.school_id = schools.id AND cs.is_delete = 0
|
|
|
|
|
LEFT JOIN attachments ON attachments.container_type ='Course' AND attachments.container_id = cs.id")
|
|
|
|
@ -106,14 +106,14 @@ class Admins::SchoolBaseStatisticService < ApplicationService
|
|
|
|
|
.select("#{base_query_column}, COUNT(*) shixun_work_count")
|
|
|
|
|
when 'student_work_count' then
|
|
|
|
|
schools.joins("LEFT JOIN school_reports ON school_reports.school_id = schools.id")
|
|
|
|
|
.select("#{base_query_column}, COUNT(*) student_work_count")
|
|
|
|
|
.select("#{base_query_column}, SUM(student_work_count) AS student_work_count")
|
|
|
|
|
when 'shixun_evaluate_count' then
|
|
|
|
|
schools.joins('LEFT JOIN school_reports ON school_reports.school_id = schools.id')
|
|
|
|
|
.select("#{base_query_column}, COUNT(*) shixun_evaluate_count")
|
|
|
|
|
.select("#{base_query_column}, SUM(shixun_evaluate_count) AS shixun_evaluate_count")
|
|
|
|
|
when 'exercise_count' then
|
|
|
|
|
schools.joins('LEFT JOIN courses cs ON cs.school_id = schools.id AND cs.is_delete = 0
|
|
|
|
|
LEFT JOIN exercises ON exercises.course_id = cs.id')
|
|
|
|
|
.select("#{base_query_column}, COUNT(*) exercise_count")
|
|
|
|
|
.select("#{base_query_column}, COUNT(exercises.id) exercise_count")
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|