# 这个模块由于作业模块的改变,里边的注释以及属性不可信 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