@ -333,13 +333,13 @@ class CoursesService
def homework_list params , current_user
def homework_list params , current_user
course = Course . find ( params [ :id ] )
course = Course . find ( params [ :id ] )
if course . is_public != 0 || current_user . member_of_course? ( course )
if course . is_public != 0 || current_user . member_of_course? ( course )
bids = course . homework_commons . page ( 1 ) . per ( 20 ) . order ( 'created_at DESC' )
bids = course . homework_commons . page ( params [ :page ] || 1 ) . per ( 20 ) . order ( 'created_at DESC' )
bids = bids . like ( params [ :name ] ) if params [ :name ] . present?
bids = bids . like ( params [ :name ] ) if params [ :name ] . present?
homeworks = [ ]
homeworks = [ ]
bids . each do | bid |
bids . each do | bid |
homeworks << show_homework_info ( course , bid , current_user , is_course_teacher ( current_user , course ) )
homeworks << show_homework_info ( course , bid , current_user , is_course_teacher ( current_user , course ) )
end
end
homeworks
homeworks
else
else
raise '403'
raise '403'
end
end
@ -552,17 +552,28 @@ class CoursesService
else
else
end
end
end
end
studentlist = [ ]
# studentlist = [ ]
bid . student_works . order ( " created_at desc " ) . page ( 1 ) . per ( 6 ) . each do | work |
# bid.student_works.order("created_at desc").page(1).per(6).each do |work |
studentlist << work . user
# studentlist << work. user
end
# end
unless is_course_teacher
# unless is_course_teacher
homework_for_anonymous_comments = get_student_batch_homework_list bid , current_user
# homework_for_anonymous_comments = get_student_batch_homework_list bid, current_user
end
# end
#end
#end
open_anonymous_evaluation = bid . homework_detail_manual . comment_status
open_anonymous_evaluation = bid . homework_detail_manual . comment_status
{ :course_name = > course . name , :course_id = > course . id , :id = > bid . id , :author = > bid . user , :author_real_name = > author_real_name , :homework_times = > many_times , :homework_name = > name , :homework_count = > homework_count , :student_questions_count = > 0 ,
{ :course_name = > course . name , :course_id = > course . id , :id = > bid . id ,
:description = > description , :homework_state = > state , :open_anonymous_evaluation = > open_anonymous_evaluation , :homework_for_anonymous_comments = > homework_for_anonymous_comments , :created_on = > bid . created_at , :deadline = > bid . end_time , :studentlist = > studentlist }
:author = > bid . user , :author_real_name = > author_real_name ,
:homework_times = > many_times , :homework_name = > name ,
:homework_count = > homework_count , :student_questions_count = > 0 ,
:description = > description , :homework_state = > state ,
:open_anonymous_evaluation = > open_anonymous_evaluation ,
#:homework_for_anonymous_comments => homework_for_anonymous_comments,
:created_on = > bid . created_at , :deadline = > bid . end_time ,
:homework_notsubmit_num = > bid . course . members . count - bid . student_works . count ,
:homework_submit_num = > bid . student_works . count ,
:homework_status_student = > get_homework_status ( bid ) , :homework_status_teacher = > homework_status_desc ( bid ) ,
:student_evaluation_part = > get_evaluation_part ( bid , 3 ) ,
:ta_evaluation_part = > get_evaluation_part ( bid , 2 ) , :homework_anony_type = > bid . homework_type == 1 && ! bid . homework_detail_manual . nil? }
end
end
@ -720,20 +731,32 @@ class CoursesService
# 获取课程历次作业的学生总成绩
# 获取课程历次作业的学生总成绩
def students_score_list params , current_user
def students_score_list params , current_user
page = ( params [ :page ] || 1 ) - 1
page = ( params [ :page ] || 1 ) - 1
user_list = [ ]
max_size = 0
if params [ :type ] == 1
if params [ :type ] == 1
homework_count = Course . find ( params [ :course_id ] ) . homework_commons . count
homework_count = Course . find ( params [ :course_id ] ) . homework_commons . count
sql = " select users.*,sum(IFNULL(0,student_works.final_score))/ #{ homework_count } score from student_works left outer join users on student_works.user_id = users.id " <<
sql = " select users.*,sum(IFNULL(0,student_works.final_score))/ #{ homework_count } score from student_works left outer join users on student_works.user_id = users.id " <<
" where homework_common_id in ( select id from homework_commons where homework_commons.course_id = #{ params [ :course_id ] } ) GROUP BY student_works.user_id ORDER BY score limit #{ page * 10 } ,10 "
" where homework_common_id in ( select id from homework_commons where homework_commons.course_id = #{ params [ :course_id ] } ) GROUP BY student_works.user_id ORDER BY score limit #{ page * 10 } ,10 "
User . find_by_sql ( sql )
sql_count = " select count(distinct(student_works.user_id) ) " <<
" from student_works left outer join users on student_works.user_id = users.id " <<
" where homework_common_id in " <<
" ( select id from homework_commons where homework_commons.course_id = #{ params [ :course_id ] } ) "
max_size = ActiveRecord :: Base . connection ( ) . select_value ( sql_count )
user_list = User . find_by_sql ( sql )
else
else
sql1 = " select users.*,count(author_id)*2 active_count from messages " <<
sql1 = " select users.*,count(author_id)*2 active_count from messages " <<
" LEFT JOIN users on messages.author_id = users.id " <<
" LEFT JOIN users on messages.author_id = users.id " <<
" where messages.board_id in (select id from boards where boards.course_id = #{ params [ :course_id ] } ) " <<
" where messages.board_id in (select id from boards where boards.course_id = #{ params [ :course_id ] } ) " <<
" GROUP BY messages.author_id ORDER BY count(author_id) desc " <<
" GROUP BY messages.author_id ORDER BY count(author_id) desc " <<
" limit #{ page * 10 } ,10 "
" limit #{ page * 10 } ,10 "
User . find_by_sql ( sql1 )
sql1_count = " select count(DISTINCT(messages.author_id)) " <<
" from messages LEFT JOIN users on messages.author_id = users.id " <<
" where messages.board_id in (select id from boards where boards.course_id = #{ params [ :course_id ] } ) "
max_size = ActiveRecord :: Base . connection ( ) . select_value ( sql1_count )
user_list = User . find_by_sql ( sql1 )
end
end
{ :user_list = > user_list , :max_size = > max_size }
end
end
# 获取某次作业的所有作业列表
# 获取某次作业的所有作业列表