64 lines
1.9 KiB
Ruby
64 lines
1.9 KiB
Ruby
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
|
|
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
|
|
end
|
|
end
|
|
end
|