@ -651,9 +651,9 @@ class CoursesService
return
end
if current_user == @user || current_user . admin?
membership = @user . coursememberships . page ( 1 ) . per ( 1 0 )
membership = @user . coursememberships . page ( 1 ) . per ( 1 5 )
else
membership = @user . coursememberships . page ( 1 ) . per ( 1 0 ) . all ( :conditions = > Course . visible_condition ( current_user ) )
membership = @user . coursememberships . page ( 1 ) . per ( 1 5 ) . all ( :conditions = > Course . visible_condition ( current_user ) )
end
if membership . nil? || membership . count == 0
raise l ( :label_no_courses , :locale = > get_user_language ( current_user ) )
@ -669,10 +669,11 @@ class CoursesService
dynamics_count = 0
# 课程学霸 学生总分数排名靠前的5个人
homework_count = course . homework_commons . count
unless homework_count == 0
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 = #{ course . id } ) GROUP BY student_works.user_id ORDER BY score limit 0,6 "
latest_course_dynamics << { :type = > 6 , :time = > Time . now . to_s , :count = > 6 , :better_students = > User . find_by_sql ( sql ) }
better_students = User . find_by_sql ( sql )
if homework_count != 0 && ! better_students . empty?
latest_course_dynamics << { :type = > 6 , :time = > Time . now . to_s , :count = > 6 , :better_students = > better_students }
dynamics_count += 1
end
# 课程通知
@ -754,5 +755,41 @@ class CoursesService
student_works
end
# 开启匿评
#statue 1:启动成功, 2: 启动失败, 作业总数大于等于2份时才能启动匿评, 3:已开启匿评,请务重复开启,4:没有开启匿评的权限
def start_anonymous_comment params , current_user
homework = HomeworkCommon . find ( params [ :homework_id ] )
return { :status = > 4 } unless current_user . admin? || current_user . allowed_to? ( :as_teacher , Course . find ( params [ :course_id ] ) )
return { :status = > 5 } if Time . parse ( homework . end_time . to_s ) . strftime ( " %Y-%m-%d " ) > = Time . now . strftime ( " %Y-%m-%d " )
homework_detail_manual = homework . homework_detail_manual
if homework_detail_manual . comment_status == 1
student_works = homework . student_works
if student_works && student_works . size > = 2
student_works . each_with_index do | work , index |
user = work . user
n = homework_detail_manual . evaluation_num
n = n < student_works . size ? n : student_works . size - 1
assigned_homeworks = get_assigned_homeworks ( student_works , n , index )
assigned_homeworks . each do | h |
student_works_evaluation_distributions = StudentWorksEvaluationDistribution . new ( user_id : user . id , student_work_id : h . id )
student_works_evaluation_distributions . save
end
end
homework_detail_manual . update_column ( 'comment_status' , 2 )
statue = 1
else
statue = 2
end
else
statue = 3
end
{ :status = > statue }
end
def get_assigned_homeworks ( student_works , n , index )
student_works += student_works
student_works [ index + 1 .. index + n ]
end
end