|
|
@ -25,85 +25,83 @@ class ExercisesController < ApplicationController
|
|
|
|
include ExercisesHelper
|
|
|
|
include ExercisesHelper
|
|
|
|
|
|
|
|
|
|
|
|
def index
|
|
|
|
def index
|
|
|
|
ActiveRecord::Base.transaction do
|
|
|
|
begin
|
|
|
|
begin
|
|
|
|
# 按发布时间或创建时间排序
|
|
|
|
# 按发布时间或创建时间排序
|
|
|
|
@exercises_all = @course.exercises
|
|
|
|
@exercises_all = @course.exercises
|
|
|
|
member_show_exercises = @exercises_all.is_exercise_published #已发布的或已截止的试卷
|
|
|
|
member_show_exercises = @exercises_all.is_exercise_published #已发布的或已截止的试卷
|
|
|
|
@current_user_ = current_user
|
|
|
|
@current_user_ = current_user
|
|
|
|
|
|
|
|
|
|
|
|
# 课堂的学生人数
|
|
|
|
# 课堂的学生人数
|
|
|
|
@course_all_members = @course.students #当前课堂的全部学生
|
|
|
|
@course_all_members = @course.students #当前课堂的全部学生
|
|
|
|
@current_student = @course_all_members.course_find_by_ids("user_id",current_user.id) #当前用户是否为课堂的学生
|
|
|
|
@current_student = @course_all_members.course_find_by_ids("user_id",current_user.id) #当前用户是否为课堂的学生
|
|
|
|
|
|
|
|
|
|
|
|
# exercises的不同用户群体的显示
|
|
|
|
# exercises的不同用户群体的显示
|
|
|
|
if @user_course_identity < Course::STUDENT # @is_teacher_or 1为老师/管理员/助教
|
|
|
|
if @user_course_identity < Course::STUDENT # @is_teacher_or 1为老师/管理员/助教
|
|
|
|
@is_teacher_or = 1
|
|
|
|
@is_teacher_or = 1
|
|
|
|
@exercises = @exercises_all #老师能看到全部的试卷,不管是已发布的/未发布的/已截止的/统一设置的/私有设置的(看到内容不同)
|
|
|
|
@exercises = @exercises_all #老师能看到全部的试卷,不管是已发布的/未发布的/已截止的/统一设置的/私有设置的(看到内容不同)
|
|
|
|
elsif @user_course_identity == Course::STUDENT # 2为课堂成员,能看到统一设置的和自己班级的
|
|
|
|
elsif @user_course_identity == Course::STUDENT # 2为课堂成员,能看到统一设置的和自己班级的
|
|
|
|
@is_teacher_or = 2
|
|
|
|
@is_teacher_or = 2
|
|
|
|
@member_group_id = @current_student.first.try(:course_group_id).to_i # 成员的分班id,默认为0
|
|
|
|
@member_group_id = @current_student.first.try(:course_group_id).to_i # 成员的分班id,默认为0
|
|
|
|
if @member_group_id == 0 #表示是课堂的未分班成员,只能查看统一设置的试卷(已发布的/已截止的)
|
|
|
|
if @member_group_id == 0 #表示是课堂的未分班成员,只能查看统一设置的试卷(已发布的/已截止的)
|
|
|
|
@exercises = member_show_exercises.exists? ? member_show_exercises.unified_setting : []
|
|
|
|
@exercises = member_show_exercises.exists? ? member_show_exercises.unified_setting : []
|
|
|
|
else #已分班级的成员,可以查看统一设置和单独设置(试卷是发布在该班级)试卷
|
|
|
|
else #已分班级的成员,可以查看统一设置和单独设置(试卷是发布在该班级)试卷
|
|
|
|
# 已发布 当前用户班级分组的 试卷id
|
|
|
|
# 已发布 当前用户班级分组的 试卷id
|
|
|
|
not_exercise_ids = @course.exercise_group_settings.exercise_group_not_published.where("course_group_id = #{@member_group_id}").pluck(:exercise_id)
|
|
|
|
not_exercise_ids = @course.exercise_group_settings.exercise_group_not_published.where("course_group_id = #{@member_group_id}").pluck(:exercise_id)
|
|
|
|
@exercises = member_show_exercises.where.not(id: not_exercise_ids)
|
|
|
|
@exercises = member_show_exercises.where.not(id: not_exercise_ids)
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
else #用户未登陆或不是该课堂成员,仅显示统一设置的(已发布的/已截止的),如有公开,则不显示锁,不公开,则显示锁
|
|
|
|
|
|
|
|
@is_teacher_or = 0
|
|
|
|
|
|
|
|
@exercises = member_show_exercises.unified_setting
|
|
|
|
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
else #用户未登陆或不是该课堂成员,仅显示统一设置的(已发布的/已截止的),如有公开,则不显示锁,不公开,则显示锁
|
|
|
|
|
|
|
|
@is_teacher_or = 0
|
|
|
|
|
|
|
|
@exercises = member_show_exercises.unified_setting
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
if @exercises.size > 0
|
|
|
|
if @exercises.size > 0
|
|
|
|
if params[:type].present?
|
|
|
|
if params[:type].present?
|
|
|
|
choose_type = params[:type].to_i
|
|
|
|
choose_type = params[:type].to_i
|
|
|
|
ex_setting_ids = []
|
|
|
|
ex_setting_ids = []
|
|
|
|
if @is_teacher_or != 2
|
|
|
|
if @is_teacher_or != 2
|
|
|
|
@exercises = @exercises.where("exercise_status = #{choose_type}")
|
|
|
|
@exercises = @exercises.where("exercise_status = #{choose_type}")
|
|
|
|
else
|
|
|
|
else
|
|
|
|
case choose_type
|
|
|
|
case choose_type
|
|
|
|
when 1
|
|
|
|
when 1
|
|
|
|
ex_setting_ids = @course.exercise_group_settings.where("course_group_id = #{@member_group_id}").exercise_group_not_published.pluck(:exercise_id)
|
|
|
|
ex_setting_ids = @course.exercise_group_settings.where("course_group_id = #{@member_group_id}").exercise_group_not_published.pluck(:exercise_id)
|
|
|
|
when 2
|
|
|
|
when 2
|
|
|
|
ex_setting_ids = @course.exercise_group_settings.where("course_group_id = #{@member_group_id}")
|
|
|
|
ex_setting_ids = @course.exercise_group_settings.where("course_group_id = #{@member_group_id}")
|
|
|
|
.where("publish_time is not null and publish_time <= ? and end_time > ?",Time.now,Time.now).pluck(:exercise_id)
|
|
|
|
.where("publish_time is not null and publish_time <= ? and end_time > ?",Time.now,Time.now).pluck(:exercise_id)
|
|
|
|
when 3
|
|
|
|
when 3
|
|
|
|
ex_setting_ids = @course.exercise_group_settings.where("course_group_id = #{@member_group_id}").exercise_group_ended.pluck(:exercise_id)
|
|
|
|
ex_setting_ids = @course.exercise_group_settings.where("course_group_id = #{@member_group_id}").exercise_group_ended.pluck(:exercise_id)
|
|
|
|
end
|
|
|
|
|
|
|
|
unified_setting_ids = @exercises.unified_setting.where("exercise_status = #{choose_type}").pluck(:id)
|
|
|
|
|
|
|
|
ex_ids = (ex_setting_ids + unified_setting_ids).uniq
|
|
|
|
|
|
|
|
@exercises = @exercises.where(id: ex_ids)
|
|
|
|
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
unified_setting_ids = @exercises.unified_setting.where("exercise_status = #{choose_type}").pluck(:id)
|
|
|
|
|
|
|
|
ex_ids = (ex_setting_ids + unified_setting_ids).uniq
|
|
|
|
|
|
|
|
@exercises = @exercises.where(id: ex_ids)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
if params[:search].present?
|
|
|
|
if params[:search].present?
|
|
|
|
search_type = params[:search].to_s.strip
|
|
|
|
search_type = params[:search].to_s.strip
|
|
|
|
@exercises = @exercises.exercise_search(search_type)
|
|
|
|
@exercises = @exercises.exercise_search(search_type)
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@exercises_select_count = @exercises.size # 全部页面,需返回
|
|
|
|
|
|
|
|
@exercises = @exercises.distinct.order( "IF(ISNULL(publish_time),0,1), publish_time DESC,created_at DESC") #出现错误
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 分页
|
|
|
|
|
|
|
|
@page = params[:page] || 1
|
|
|
|
|
|
|
|
@limit = params[:limit] || 15
|
|
|
|
|
|
|
|
@exercises = @exercises.page(@page).per(@limit)
|
|
|
|
|
|
|
|
@exercises = @exercises&.includes(:published_settings)
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
@exercises = []
|
|
|
|
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
@course_all_members_count = @course_all_members.size #当前课堂的学生数
|
|
|
|
@exercises_select_count = @exercises.size # 全部页面,需返回
|
|
|
|
@exercises_count = @exercises_all.size # 全部页面,需返回
|
|
|
|
@exercises = @exercises.distinct.order( "IF(ISNULL(publish_time),0,1), publish_time DESC,created_at DESC") #出现错误
|
|
|
|
@exercises_unpublish_counts = @exercises_all.exercise_by_status(1).size #未发布的试卷数
|
|
|
|
|
|
|
|
@exercises_published_counts = @exercises_count - @exercises_unpublish_counts # 已发布的试卷数,包含已截止的
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rescue Exception => e
|
|
|
|
# 分页
|
|
|
|
uid_logger_error(e.message)
|
|
|
|
@page = params[:page] || 1
|
|
|
|
tip_exception(e.message)
|
|
|
|
@limit = params[:limit] || 15
|
|
|
|
raise ActiveRecord::Rollback
|
|
|
|
@exercises = @exercises.page(@page).per(@limit)
|
|
|
|
|
|
|
|
@exercises = @exercises&.includes(:published_settings)
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
@exercises = []
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@course_all_members_count = @course_all_members.size #当前课堂的学生数
|
|
|
|
|
|
|
|
@exercises_count = @exercises_all.size # 全部页面,需返回
|
|
|
|
|
|
|
|
@exercises_unpublish_counts = @exercises_all.exercise_by_status(1).size #未发布的试卷数
|
|
|
|
|
|
|
|
@exercises_published_counts = @exercises_count - @exercises_unpublish_counts # 已发布的试卷数,包含已截止的
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rescue Exception => e
|
|
|
|
|
|
|
|
uid_logger_error(e.message)
|
|
|
|
|
|
|
|
tip_exception(e.message)
|
|
|
|
|
|
|
|
raise ActiveRecord::Rollback
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|