socialforge/app/api/mobile/entities/homework.rb

115 lines
4.2 KiB
Ruby
Raw Normal View History

2015-06-19 15:05:25 +08:00
# 这个模块由于作业模块的改变,里边的注释以及属性不可信
module Mobile
module Entities
class Homework < Grape::Entity
include Redmine::I18n
2015-06-30 15:17:22 +08:00
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)
2015-01-21 11:28:09 +08:00
if f.respond_to?(field)
f.send(field)
else
2015-06-19 15:05:25 +08:00
case field
when :homework_name
f.send(:name)
when :homework_notsubmit_num
f.course.members.count - f.student_works.count
2015-06-30 15:17:22 +08:00
when :homework_submit_num
f.student_works.count
2015-07-04 15:53:01 +08:00
when :homework_status_student
2015-06-30 15:17:22 +08:00
get_homework_status f
2015-07-02 17:31:30 +08:00
when :homework_times
f.course.homework_commons.index(f) + 1
2015-07-04 15:53:01 +08:00
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
2016-09-19 13:53:15 +08:00
when :syllabus_title
f.course.nil? ? "" : f.course.syllabus.nil? ? "" : f.course.syllabus.title
2015-06-19 15:05:25 +08:00
end
2015-01-21 11:28:09 +08:00
end
end
end
end
#作业id
homework_expose :id
#课程名称
homework_expose :course_name
2016-09-19 13:53:15 +08:00
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
2015-03-04 17:04:07 +08:00
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
2015-06-30 15:17:22 +08:00
homework_expose :homework_submit_num
2015-06-19 15:05:25 +08:00
homework_expose :homework_notsubmit_num
homework_expose :homework_status_student #学生看到的作业的状态
2015-07-04 15:53:01 +08:00
homework_expose :homework_status_teacher #老师看到的状态
2015-06-26 09:18:12 +08:00
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