115 lines
4.2 KiB
Ruby
115 lines
4.2 KiB
Ruby
# 这个模块由于作业模块的改变,里边的注释以及属性不可信
|
||
module Mobile
|
||
module Entities
|
||
class Homework < Grape::Entity
|
||
include Redmine::I18n
|
||
include ApplicationHelper
|
||
include ApiHelper
|
||
def self.homework_expose(field)
|
||
expose field do |f,opt|
|
||
if f.is_a?(Hash) && f.key?(field)
|
||
if field == :created_on
|
||
format_time(f[field])
|
||
else
|
||
f[field]
|
||
end
|
||
elsif f.is_a?(::HomeworkCommon)
|
||
if f.respond_to?(field)
|
||
f.send(field)
|
||
else
|
||
case field
|
||
when :homework_name
|
||
f.send(:name)
|
||
when :homework_notsubmit_num
|
||
f.course.members.count - f.student_works.count
|
||
when :homework_submit_num
|
||
f.student_works.count
|
||
when :homework_status_student
|
||
get_homework_status f
|
||
when :homework_times
|
||
f.course.homework_commons.index(f) + 1
|
||
when :homework_status_teacher
|
||
homework_status_desc f
|
||
when :student_evaluation_part
|
||
get_evaluation_part f ,3
|
||
when :ta_evaluation_part
|
||
get_evaluation_part f , 2
|
||
when :homework_anony_type
|
||
val = f.homework_type == 1 && !f.homework_detail_manual.nil?
|
||
val
|
||
when :coursename
|
||
f.course.nil? ? "" : f.course.name
|
||
when :syllabus_title
|
||
f.course.nil? ? "" : f.course.syllabus.nil? ? "" : f.course.syllabus.title
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
#作业id
|
||
homework_expose :id
|
||
#课程名称
|
||
homework_expose :course_name
|
||
|
||
homework_expose :syllabus_title
|
||
|
||
homework_expose :course_id
|
||
#作业发布者
|
||
expose :author,using: Mobile::Entities::User do |f, opt|
|
||
f[:author]
|
||
end
|
||
|
||
#作业发布者真名
|
||
homework_expose :author_real_name
|
||
|
||
#作业次数
|
||
homework_expose :homework_times
|
||
#作业名称
|
||
homework_expose :homework_name
|
||
#已提交的作业数量
|
||
homework_expose :homework_count
|
||
#学生提问数量
|
||
homework_expose :student_questions_count
|
||
#作业描述
|
||
homework_expose :description
|
||
#作业是否启用匿评功能 0:不启用,1启用
|
||
homework_expose :open_anonymous_evaluation
|
||
#作业状态 0:新建,1:已开启匿评,2:已关闭匿评
|
||
#只有作业启用了匿评功能且当前用户是课程老师且已提交的作品数量大于或等于2才能开启匿评
|
||
homework_expose :homework_state
|
||
|
||
homework_expose :created_on
|
||
homework_expose :deadline
|
||
|
||
expose :jours,using: Mobile::Entities::Jours do |f, opt|
|
||
f[:jours] if f.is_a?(Hash) && f.key?(:jours)
|
||
end
|
||
|
||
expose :homework_for_anonymous_comments,using: Mobile::Entities::HomeworkAttach do |f, opt|
|
||
f[:homework_for_anonymous_comments] if f.is_a?(Hash) && f.key?(:homework_for_anonymous_comments)
|
||
end
|
||
|
||
homework_expose :homework_submit_num
|
||
homework_expose :homework_notsubmit_num
|
||
|
||
homework_expose :homework_status_student #学生看到的作业的状态
|
||
homework_expose :homework_status_teacher #老师看到的状态
|
||
|
||
homework_expose :student_evaluation_part #学生匿评比率
|
||
homework_expose :ta_evaluation_part #教辅评价比率
|
||
|
||
homework_expose :homework_anony_type #是否是匿评作业
|
||
|
||
homework_expose :coursename #所属班级名
|
||
|
||
expose :current_user_is_teacher, if: lambda { |instance, options| options[:user] } do |instance, options|
|
||
if instance[:current_user_is_teacher].nil?
|
||
current_user = options[:user]
|
||
current_user_is_teacher = false
|
||
current_user_is_teacher = is_course_teacher(current_user,instance.course)
|
||
current_user_is_teacher
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end |