socialforge/app/helpers/api_helper.rb

137 lines
4.4 KiB
Ruby

# encoding: utf-8
module ApiHelper
#获取用户的工作单位
def get_user_work_unit user
work_unit = ""
if user.user_extensions.identity == 0 || user.user_extensions.identity == 1
work_unit = user.user_extensions.school.name unless user.user_extensions.school.nil?
elsif user.user_extensions.identity == 3
work_unit = user.user_extensions.occupation
elsif user.user_extensions.identity == 2
work_unit = user.firstname
end
work_unit
end
#获取用户地区
def get_user_location user
location = ""
location << (user.user_extensions.location || '')
location << (user.user_extensions.location_city || '')
location
end
def get_assigned_homeworks(homeworks, n, index)
homeworks += homeworks
homeworks[index + 1 .. index + n]
end
def stars_to_json_like starts,show_jour,homework,show_name
result = []
starts.each do |s|
comment = get_homework_review homework,show_jour,s.rater
rater_name = show_name ? s.rater.login : l(:label_anonymous)
rater_id = show_name ? s.rater.id : ''
result << {:rater_id =>rater_id ,:rater_name => rater_name,:created_at => format_time(s.created_at),:stars => s.stars,:comment => comment}
end
result
end
#########################################################
#sw
#获取课程未匿评数量
#param: user => "用户", course_id => "查询的课程ID"
#return: 作业的数量
#########################################################
def get_course_anonymous_evaluation user,course
count = 0
if course
is_teacher = is_course_teacher user,course
if is_teacher #如果是老师,显示学生提交的作业数
course.homeworks.each do |bid|
count += bid.homeworks.count
end
else #如果是学生,显示未匿评的数量
course.homeworks.each do |bid|
count += get_student_not_batch_homework_list bid,user
end
end
end
[count,is_teacher]
end
def get_user_language user
(user.language.nil? || user.language == "") ? 'zh':user.language
end
# 获取课程作业的状态
def get_homework_status homework
homework_status = ""
if !homework.nil?
if homework.homework_type == 1 && homework.homework_detail_manual
case homework.homework_detail_manual.comment_status
when 1
homework_status = show_homework_deadline homework
when 2
homework_status = "正在匿评中"
when 3
homework_status = "匿评已结束"
end
elsif homework.homework_type == 0
homework_status = "未启用匿评"
elsif homework.homework_type == 2
homework_status = "编程作业"
else
end
end
homework_status
end
#获取作业的是否可以匿评的描述
def homework_status_desc homework
if homework.homework_type == 1 && homework.homework_detail_manual #匿评作业
if Time.parse(homework.end_time.to_s).strftime("%Y-%m-%d") >= Time.now.strftime("%Y-%m-%d")
link = "截止日期之前不可启动匿评"
elsif homework.student_works.count >= 2 #作业份数大于2
case homework.homework_detail_manual.comment_status
when 1
link = '启动匿评'
when 2
link = '关闭匿评'
when 3
link = " 匿评结束"
end
else
link = "提交作业数大于2才可启动匿评"
end
else
link = "未开启匿评作业不可启动匿评"
end
link
end
#获取
def get_submit_sutdent_list homework
studentlist = []
if homework.is_a?(Hash) && homework.key?(:studentlist)
studentlist = homework[:studentlist]
else
homework.student_works.order("created_at desc").page(1).per(6).each do |work|
studentlist << work.user
end
end
studentlist
end
#计算作业的截止日期,剩余日期
def show_homework_deadline homework
day = 0
if (day = (Date.parse(homework.end_time.to_s) - Date.parse(Time.now.to_s)).to_i) > 0
"距作业截止还有" << (Date.parse(Time.now.to_s) - Date.parse(homework.end_time.to_s)).to_i.to_s << ""
else
"已截止,但可补交"
end
end
end