module Mobile
  module Entities
    class Course < Grape::Entity
      include Redmine::I18n
      def self.course_expose(field)
        expose field do |f,opt|
          c = nil
          if f.is_a? ::Course
            c = f
          else
            c = f[:course]
          end
          if f.is_a?(Hash) && f.key?(field)
            f[field] if f.is_a?(Hash) && f.key?(field)
            #f.img_url if f.respond_to?(:img_url)
          elsif field == :created_at || field == :updated_at
            (format_time(c[field]) if (c.is_a?(Hash) && c.key?(field))) || (format_time(c.send(field)) if c.respond_to?(field))
          else
            (c[field] if (c.is_a?(Hash) && c.key?(field))) || (c.send(field) if c.respond_to?(field))
          end
        end
      end
      course_expose :img_url
      course_expose :attachmenttype
      course_expose :class_period
      course_expose :code
      course_expose :created_at
      course_expose :description
      course_expose :endup_time
      course_expose :extra
      course_expose :id
      course_expose :inherit_members
      course_expose :is_public
      course_expose :lft
      course_expose :location
      course_expose :name
      course_expose :open_student
      # course_expose :password
      course_expose :rgt
      course_expose :school_id
      course_expose :setup_time
      course_expose :state
      course_expose :status
      course_expose :string
      course_expose :tea_id
      course_expose :term
      course_expose :time
      course_expose :updated_at
      course_expose :course_student_num
      expose :teacher, using: Mobile::Entities::User do |c, opt|
        if c.is_a? ::Course
          c.teacher
        else
          c[:course].teacher
        end
      end
      expose :my_homework,using: Mobile::Entities::Homework  do |f, opt|
        f[:my_homework] if f.is_a?(Hash) && f.key?(:my_homework)
      end
      course_expose :current_user_is_member
      course_expose :current_user_is_teacher
      course_expose :work_unit
    end
  end
end
