module Mobile module Entities class Course < Grape::Entity include Redmine::I18n include ApplicationHelper include ApiHelper 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)) elsif field == :member_count ::Course===c ? c.members.count : 0 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 :invite_code course_expose :qrcode course_expose :updated_at course_expose :course_student_num course_expose :member_count expose :can_setting, if: lambda { |instance, options| options[:user] } do |instance, options| current_user = options[:user] can_setting = false if instance[:course] course = instance[:course] else course = instance end member = course.members.where("user_id=#{current_user.id} and course_id=#{course.id}")[0] roleName = member.roles[0].name if member if roleName && (roleName == "TeachingAsistant" || roleName == "Teacher" ) can_setting = true end if course.tea_id == current_user.id can_setting = true end can_setting end 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