# 这个模块由于作业模块的改变，里边的注释以及属性不可信
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
                end
            end
          end
        end
      end
      #作业id
      homework_expose :id
      #课程名称
      homework_expose :course_name

      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 #是否是匿评作业

    end
  end
end