module Mobile module Entities class CourseDynamic < Grape::Entity include Redmine::I18n def self.course_dynamic_expose(field) expose field do |c,opt| if field == :update_time (format_time(c[field]) if (c.is_a?(Hash) && c.key?(field))) elsif field == :news_count obj = nil c[:dynamics].each do |d| if d[:type] == 1 obj = d[:count] end end obj elsif field == :document_count obj = nil c[:dynamics].each do |d| if d[:type] == 3 obj = d[:count] end end obj elsif field == :topic_count obj = nil c[:dynamics].each do |d| if d[:type] == 2 obj = d[:count] end end obj elsif field == :homework_count obj = nil c[:dynamics].each do |d| if d[:type] == 4 obj = d[:count] end end obj else c[field] if (c.is_a?(Hash) && c.key?(field)) end end end course_dynamic_expose :type course_dynamic_expose :count course_dynamic_expose :course_name course_dynamic_expose :course_term course_dynamic_expose :course_time course_dynamic_expose :course_id course_dynamic_expose :course_img_url course_dynamic_expose :message course_dynamic_expose :update_time course_dynamic_expose :count course_dynamic_expose :news_count course_dynamic_expose :document_count course_dynamic_expose :topic_count course_dynamic_expose :homework_count #在dynamics里解析出四种动态 expose :documents,using:Mobile::Entities::Attachment do |f,opt| obj = nil f[:dynamics].each do |d| if d[:type] == 3 obj = d[:documents] end end obj end expose :topics,using:Mobile::Entities::Message do |f,opt| obj = nil f[:dynamics].each do |d| if d[:type] == 2 obj = d[:topics] end end obj end expose :homeworks,using:Mobile::Entities::Homework do |f,opt| obj = nil f[:dynamics].each do |d| if d[:type] == 4 obj = d[:homeworks] end end obj end expose :news,using:Mobile::Entities::News do |f,opt| obj = nil f[:dynamics].each do |d| if d[:type] == 1 obj = d[:news] end end obj end expose :better_students,using:Mobile::Entities::User do |f,opt| obj = nil f[:dynamics].each do |d| if d[:type] == 6 obj = d[:better_students] end end obj end end end end