@ -9,32 +9,32 @@ class StudentWorkController < ApplicationController
before_filter :teacher_of_course , :only = > [ :student_work_absence_penalty , :absence_penalty_list , :evaluation_list ]
def index
@order , @b_sort , @name = params [ :order ] || " final_ score" , params [ :sort ] || " desc " , params [ :name ] || " "
@order , @b_sort , @name = params [ :order ] || " score" , params [ :sort ] || " desc " , params [ :name ] || " "
@is_teacher = User . current . allowed_to? ( :as_teacher , @course )
#老师 || 非匿评作业 || 匿评结束 显示所有的作品
@show_all = @is_teacher || @homework . homework_type != 1 || @homework . homework_detail_manual . comment_status == 3
@show_all = @is_teacher || @homework . homework_type != 1 || @homework . homework_detail_manual . comment_status == 3 || User . current . admin?
if @show_all
if @homework . homework_type == 1 || @is_teacher || User . current . admin?
if @homework . homework_type == 1 || @is_teacher || User . current . admin? #超级管理员 || 老师 || 匿评结束 显示所有的作品
if @order == " name "
@stundet_works = search_homework_member @homework . student_works . joins( :user ) . order ( " users.lastname #{ @b_sort } , users.firstname #{ @b_sort } " ) , @name
@stundet_works = search_homework_member @homework . student_works . select( " *,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score " ) . joins( :user ) . order ( " users.lastname #{ @b_sort } , users.firstname #{ @b_sort } " ) , @name
else
@stundet_works = search_homework_member @homework . student_works . order( " #{ @order } #{ @b_sort } " ) , @name
@stundet_works = search_homework_member @homework . student_works . select( " *,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score " ) . order( " #{ @order } #{ @b_sort } " ) , @name
end
else
my_work = @homework . student_works . where( :user_id = > User . current . id )
else #剩余情况: 学生 && 非匿评作业 如果未提交作品,只能看到自己的,提交了作品,能看到所有作品
my_work = @homework . student_works . select( " *,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score " ) . where( :user_id = > User . current . id )
if my_work . empty?
@stundet_works = [ ]
else
if @order == " name "
@stundet_works = search_homework_member @homework . student_works . joins( :user ) . order ( " users.lastname #{ @b_sort } , users.firstname #{ @b_sort } " ) , @name
@stundet_works = search_homework_member @homework . student_works . select( " *,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score " ) . joins( :user ) . order ( " users.lastname #{ @b_sort } , users.firstname #{ @b_sort } " ) , @name
else
@stundet_works = search_homework_member @homework . student_works . order( " #{ @order } #{ @b_sort } " ) , @name
@stundet_works = search_homework_member @homework . student_works . select( " *,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score " ) . order( " #{ @order } #{ @b_sort } " ) , @name
end
end
end
else #学生
if @homework . homework_detail_manual . comment_status == 1 #未开启匿评,只显示我的作品
@stundet_works = @homework . student_works . where( :user_id = > User . current . id )
@stundet_works = @homework . student_works . select( " *,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score " ) . where( :user_id = > User . current . id )
elsif @homework . homework_detail_manual . comment_status == 2 #匿评列表,显示匿评作品和我的作品
@is_evaluation = true
my_work = @homework . student_works . where ( :user_id = > User . current . id )
@ -42,6 +42,7 @@ class StudentWorkController < ApplicationController
end
end
@homework_commons = @course . homework_commons . order ( " created_at desc " )
@homework_commons = @course . homework_commons . order ( " created_at desc " )
@score = @b_sort == " desc " ? " asc " : " desc "
respond_to do | format |
format . html
@ -73,6 +74,11 @@ class StudentWorkController < ApplicationController
stundet_work . homework_common_id = @homework . id
stundet_work . user_id = User . current . id
stundet_work . save_attachments ( params [ :attachments ] )
if Time . parse ( @homework . end_time . to_s ) . strftime ( " %Y-%m-%d " ) < Time . parse ( Time . now . to_s ) . strftime ( " %Y-%m-%d " )
stundet_work . late_penalty = @homework . late_penalty
else
stundet_work . late_penalty = 0
end
render_attachment_warning_if_needed ( stundet_work )
if stundet_work . save
respond_to do | format |
@ -251,7 +257,7 @@ class StudentWorkController < ApplicationController
work_ids = " ( " + @homework . student_works . map ( & :id ) . join ( " , " ) + " ) "
@stundet_works = StudentWork . find_by_sql ( " SELECT *,(all_count - has_count) AS absence FROM(
SELECT * ,
( SELECT evaluation_num FROM homework_detail_manuals WHERE homework_detail_manuals . homework_common_id = #{@homework.id }) AS all_count,
( SELECT COUNT ( * ) FROM ` student_works_evaluation_distributions ` WHERE user_id = student_works . user_id AND student_work_id IN #{work_ids }) AS all_count,
( SELECT COUNT ( * ) FROM ` student_works_scores ` WHERE user_id = student_works . user_id AND student_work_id IN #{work_ids}) AS has_count
FROM ` student_works `
WHERE homework_common_id = #{@homework.id}