You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							113 lines
						
					
					
						
							3.5 KiB
						
					
					
				
			
		
		
	
	
							113 lines
						
					
					
						
							3.5 KiB
						
					
					
				| 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]
 | |
|         role_ids = member.role_ids if member
 | |
| 
 | |
|         if role_ids && (role_ids.include?(7) || role_ids.include?(9) )
 | |
|           can_setting = true
 | |
|         end
 | |
| 
 | |
|         if course.tea_id == current_user.id
 | |
|           can_setting = true
 | |
|         end
 | |
|         can_setting
 | |
|       end
 | |
|       expose :is_member, if: lambda { |instance, options| options[:user] } do |instance, options|
 | |
|         current_user = options[:user]
 | |
|         if instance[:course]
 | |
|           course = instance[:course]
 | |
|         else
 | |
|           course = instance
 | |
|         end
 | |
|         current_user.member_of_course?(course)
 | |
|       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
 | |
|       expose :is_creator, if: lambda { |instance, options| options[:user] } do |instance, options|
 | |
|         if instance[:course]
 | |
|           course = instance[:course]
 | |
|         else
 | |
|           course = instance
 | |
|         end
 | |
|         current_user = options[:user]
 | |
|         course.tea_id == current_user.id
 | |
|       end
 | |
|       course_expose :current_user_is_member
 | |
|       course_expose :current_user_is_teacher
 | |
|       course_expose :work_unit
 | |
|     end
 | |
|   end
 | |
| end
 |