dev_course
SylorHuang 5 years ago
parent a88f27af31
commit 9034e1a534

@ -98,59 +98,89 @@ class Exercise < ApplicationRecord
#判断是否为分班,如果分班,试卷的截止时间为当前分班时间,否则为试卷的截止时间 #判断是否为分班,如果分班,试卷的截止时间为当前分班时间,否则为试卷的截止时间
def get_exercise_status(user_id) def get_exercise_status(user_id)
user_group = course.course_members.find_by(user_id: user_id) user_group = course.course_members.find_by(user_id: user_id)
if user_group.present? if user_group.present? && user_group.role == "STUDENT" #当为学生的时候,需根据分班来判断试卷状态
if user_group.role == "STUDENT" #为学生 ex_time = get_exercise_times(user_id,false)
is_teacher = false
else
is_teacher = true
end
ex_time = get_exercise_times(user_id,is_teacher)
pb_time = ex_time[:publish_time] pb_time = ex_time[:publish_time]
ed_time = ex_time[:end_time] ed_time = ex_time[:end_time]
if pb_time.present? && ed_time.present? && pb_time <= Time.now && ed_time > Time.now if pb_time.present? && ed_time.present? && pb_time <= Time.now && ed_time > Time.now
status = 2 status = 2
elsif ed_time.present? && ed_time <= Time.now elsif ed_time.present? && ed_time <= Time.now
status = 3 status = 3
else else
status = 1 status = 1
end end
else else
status = exercise_status status = exercise_status #当为老师的时候,则为试卷的总状态
end end
Rails.logger.info("#################__________status___________####################{status}") # if user_group.present?
# if user_group.role == "STUDENT" #为学生
# is_teacher = false
# else
# is_teacher = true
# end
# ex_time = get_exercise_times(user_id,is_teacher)
#
# pb_time = ex_time[:publish_time]
# ed_time = ex_time[:end_time]
#
# if pb_time.present? && ed_time.present? && pb_time <= Time.now && ed_time > Time.now
# status = 2
# elsif ed_time.present? && ed_time <= Time.now
# status = 3
# else
# status = 1
# end
# else
# status = exercise_status
# end
status status
end end
#获取试卷的发布时间和截止时间。teacher 为boolean,当为true时表示的是当前为老师 #获取试卷的发布时间和截止时间。teacher 为boolean,当为true时表示的是当前为老师
def get_exercise_times(user_id,teacher) def get_exercise_times(user_id,teacher)
if unified_setting if unified_setting || teacher #当试卷为统一设置或当前为老师的时候
pb_time = publish_time pb_time = publish_time
en_time = end_time en_time = end_time
if end_time <= Time.now && exercise_status != 3
update_column("exercise_status",3)
end
else else
ex_group_setting = exercise_group_settings ex_group_setting = exercise_group_settings
if teacher #当前为老师,为设置组的最大值和最小值 # if teacher #当前为老师,为设置组的最大值和最小值
user_group = course.teacher_course_groups.get_user_groups(user_id) # user_group = course.teacher_course_groups.get_user_groups(user_id)
user_group_ids = user_group.present? ? user_group.pluck(:course_group_id) : course.course_groups.pluck(:id) # user_group_ids = user_group.present? ? user_group.pluck(:course_group_id) : course.course_groups.pluck(:id)
user_ex_group_settings = ex_group_setting.find_in_exercise_group("course_group_id",user_group_ids) # user_ex_group_settings = ex_group_setting.find_in_exercise_group("course_group_id",user_group_ids)
pb_time_min = user_ex_group_settings.publish_time_no_null.map(&:publish_time) # pb_time_min = user_ex_group_settings.publish_time_no_null.map(&:publish_time)
en_time_max = user_ex_group_settings.end_time_no_null.map(&:end_time) # en_time_max = user_ex_group_settings.end_time_no_null.map(&:end_time)
pb_time = pb_time_min.size > 0 ? pb_time_min.min : nil # pb_time = pb_time_min.size > 0 ? pb_time_min.min : nil
en_time = en_time_max.size > 0 ? en_time_max.max : nil # en_time = en_time_max.size > 0 ? en_time_max.max : nil
# else
# user_group = course.students.course_find_by_ids("user_id",user_id)
# if user_group.present?
# user_group_id = user_group.first.course_group_id
# user_ex_group_setting = ex_group_setting.find_in_exercise_group("course_group_id",user_group_id)
# pb_time = user_ex_group_setting.present? ? user_ex_group_setting.first.publish_time : nil
# en_time = user_ex_group_setting.present? ? user_ex_group_setting.first.end_time : nil
# else
# pb_time = nil
# en_time = nil
# end
# end
user_group = course.students.course_find_by_ids("user_id",user_id)
if user_group.present?
user_group_id = user_group.first.course_group_id
user_ex_group_setting = ex_group_setting.find_in_exercise_group("course_group_id",user_group_id)
pb_time = user_ex_group_setting.present? ? user_ex_group_setting.first.publish_time : nil
en_time = user_ex_group_setting.present? ? user_ex_group_setting.first.end_time : nil
else else
user_group = course.students.course_find_by_ids("user_id",user_id) pb_time = nil
if user_group.present? en_time = nil
user_group_id = user_group.first.course_group_id
user_ex_group_setting = ex_group_setting.find_in_exercise_group("course_group_id",user_group_id)
pb_time = user_ex_group_setting.present? ? user_ex_group_setting.first.publish_time : nil
en_time = user_ex_group_setting.present? ? user_ex_group_setting.first.end_time : nil
else
pb_time = nil
en_time = nil
end
end end
end end
{ {
"publish_time":pb_time, "publish_time":pb_time,
"end_time":en_time "end_time":en_time

Loading…
Cancel
Save