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.
102 lines
4.0 KiB
102 lines
4.0 KiB
# encoding: utf-8
|
|
module Mobile
|
|
module Entities
|
|
class Activity <Grape::Entity
|
|
include ApplicationHelper
|
|
include ApiHelper
|
|
def self.act_expose(f)
|
|
expose f do |ac,opt|
|
|
if ac.is_a?(Hash) && ac.key?(f)
|
|
ac[f]
|
|
elsif ac.is_a?(::UserActivity)
|
|
if ac.respond_to?(f)
|
|
ac.send(f)
|
|
else
|
|
case f
|
|
when :user_act
|
|
if ac.act_type == "ProjectCreateInfo"
|
|
ac unless ac.nil?
|
|
else
|
|
ac.act unless ac.nil? || ac.act.nil?
|
|
end
|
|
when :reply_num
|
|
if ac.act_type == "HomeworkCommon"
|
|
ac.nil? || ac.act.nil? ? 0 : ac.act.journals_for_messages.count
|
|
elsif ac.act_type == "News"
|
|
ac.nil? || ac.act.nil? ? 0 : ac.act.comments.count
|
|
elsif ac.act_type == "Message" || ac.act_type == "BlogComment" || ac.act_type == "JournalsForMessage"
|
|
ac.nil? || ac.act.nil? ? 0 : ac.act.children.count
|
|
elsif ac.act_type == "Issue"
|
|
ac.nil? || ac.act.nil? ? 0 : ac.act.journals.count
|
|
end
|
|
when :activity_praise_num
|
|
if ac.act_type == "HomeworkCommon" || ac.act_type == "News" || ac.act_type == "Message" || ac.act_type == "BlogComment" || ac.act_type == "JournalsForMessage" || ac.act_type == "Issue"
|
|
ac.nil? || ac.act.nil? ? 0 : get_activity_praise_num(ac.act)
|
|
end
|
|
when :homework_common_detail_manual
|
|
if ac.act_type == "HomeworkCommon"
|
|
ac.act.homework_detail_manual unless ac.nil? || ac.act.nil? || ac.act.homework_detail_manual.nil?
|
|
end
|
|
when :course_project_name
|
|
if ac.container_type == "Course"
|
|
name = (get_course(ac.container_id)).name
|
|
name
|
|
elsif ac.container_type == "Project"
|
|
name = (get_project(ac.container_id)).name
|
|
name
|
|
elsif ac.container_type == "Blog"
|
|
"发表博客"
|
|
end
|
|
when :activity_type_name
|
|
if ac.container_type == "Course"
|
|
case ac.act_type
|
|
when "HomeworkCommon"
|
|
"课程作业"
|
|
when "News"
|
|
"课程通知"
|
|
when "Message"
|
|
"课程问答区"
|
|
when "Poll"
|
|
"课程问卷"
|
|
when "Course"
|
|
"课程"
|
|
end
|
|
elsif ac.container_type == "Project"
|
|
case ac.act_type
|
|
when "Issue"
|
|
"项目缺陷"
|
|
when "Message"
|
|
"项目问答区"
|
|
when "ProjectCreateInfo"
|
|
"项目"
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
expose :act_type
|
|
expose :container_type
|
|
expose :author, using: Mobile::Entities::User do |a, opt|
|
|
if a.is_a? ::UserActivity
|
|
if a.act_type == "ProjectCreateInfo"
|
|
get_user(get_project(a.act_id).user_id)
|
|
elsif a.act_type == 'Issue' || a.act_type == 'News' || a.act_type == 'Message' || a.act_type == 'BlogComment'
|
|
a.act.author
|
|
elsif a.act_type == 'HomeworkCommon' || a.act_type == 'Poll' || a.act_type == 'JournalsForMessage'
|
|
a.act.user
|
|
elsif a.act_type == 'Course'
|
|
a.act.teacher
|
|
end
|
|
end
|
|
end
|
|
act_expose :homework_common_detail_manual
|
|
act_expose :reply_num
|
|
act_expose :activity_praise_num
|
|
act_expose :user_act
|
|
act_expose :course_project_name
|
|
act_expose :activity_type_name
|
|
end
|
|
end
|
|
end |