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 course_expose :groupnum 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 course_expose :syllabus_title end end end