You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
educoder/app/helpers/polls_helper.rb

132 lines
4.5 KiB

module PollsHelper
#获取试卷的已答/未答人数
def get_poll_answers(poll_users)
@commit_poll_users = poll_users.commit_by_status(1) #当前老师的全部学生中已提交的
@poll_answers = @commit_poll_users.present? ? @commit_poll_users.size : 0 #表示已经提交了的用户
course_all_members_count = poll_users.present? ? poll_users.size : 0
@poll_unanswers = (course_all_members_count - @poll_answers)
end
def poll_votes_count(votes,user_ids)
votes.find_current_vote("user_id",user_ids.uniq).size
end
#公用tab页的相关信息
def poll_common_header(is_teacher_or,poll)
poll_url_status = []
if is_teacher_or == 1 #当为老师的
common_tabs = %w(1 2 3 4)
else
if poll.show_result #开启了公开统计
common_tabs = %w(1 2)
else
common_tabs = %w(1)
end
end
common_tabs.each do |c|
if request.url.include?("polls_lists")
active_status = 1
elsif request.url.include?("commit_result")
active_status = 1
elsif request.url.include?("poll_setting")
active_status = 1
elsif request.url == poll_path(poll)
active_status = 1
else
active_status = 0
end
common_tab = {
:common_tab => c,
:active_status => active_status
}
poll_url_status.push(common_tab)
end
poll_url_status
end
#poll的列表页的显示
def poll_index_show(poll,course,is_teacher_or,user)
# poll_all_users = poll.poll_users
if course.is_end #课堂停止后,试卷显示为已结束
poll_status = 4
elsif is_teacher_or == 1 || is_teacher_or == 0 || poll.unified_setting
#当前为老师(非课堂成员、统一设置)的时候,显示的是老师身份的对应试卷的状态,因为该试卷,可能对应老师的多个分班
poll_status = poll.polls_status
else
poll_status = poll.get_poll_status(user.id) #当前用户查看的试卷的发布状态
end
if is_teacher_or == 1
poll_users_list = poll.all_poll_users(user.id) #当前老师所在班级的全部学生
get_poll_answers(poll_users_list)
ex_pb_time = poll.get_poll_times(user.id,true)
poll_publish_time = ex_pb_time[:publish_time]
poll_end_time = ex_pb_time[:end_time]
current_status = 3
lock_icon = 1 #不显示锁图标
elsif is_teacher_or == 2
poll_users_list = poll.get_poll_exercise_users
get_poll_answers(poll_users_list) # 未答和已答的
# get_poll_answers(poll_all_users)
ex_pb_time = poll.get_poll_times(user.id,false)
poll_publish_time = ex_pb_time[:publish_time]
poll_end_time = ex_pb_time[:end_time]
current_status = poll.check_user_votes_status(user)
lock_icon = 1 #不显示锁图标
else
poll_users_list = poll.get_poll_exercise_users
get_poll_answers(poll_users_list) # 未答和已答的
poll_publish_time = poll.publish_time
poll_end_time = poll.end_time
current_status = 4
if poll.is_public
lock_icon = 1 #非课堂成员,但是试卷为公开的,不加锁
else
lock_icon = 0 #显示锁图标
end
end
{
"publish_time":poll_publish_time,
"end_time":poll_end_time,
"poll_answer":@poll_answers,
"poll_unanswer":@poll_unanswers,
"current_status":current_status,
"lock_icon":lock_icon,
"polls_status":poll_status
}
end
#问卷列表页的用户信息显示
def poll_user_info(poll_user,course_members,course)
poll = poll_user.poll
user = poll_user.user
user_student_id = user.student_id
if poll.un_anonymous #是否开启实名认证
poll_user_name = user.real_name
else
poll_user_name = user.nickname
end
course_member = course_members.find_by(user_id:user.id)
course_group_id = course_member.present? ? course_member.course_group_id : nil
if course_group_id == 0
course_group_name = "未分班"
else
course_group = course.course_groups.find_by_id(course_group_id)
course_group_id = course_group&.id
course_group_name = course_group&.name
end
{
"user_name":poll_user_name,
"user_id": user.id,
"student_id":user_student_id,
"group_name":course_group_name,
"group_id":course_group_id,
"login":user.login
}
end
end