2016-07-25 15:20:01 +08:00
|
|
|
module Mobile
|
|
|
|
module Entities
|
|
|
|
class Project < Grape::Entity
|
|
|
|
expose :name
|
|
|
|
expose :id
|
2016-09-01 11:18:42 +08:00
|
|
|
expose :is_public
|
2016-07-27 14:30:19 +08:00
|
|
|
expose :user_id
|
2016-08-03 10:56:55 +08:00
|
|
|
expose :invite_code
|
2016-08-04 09:08:18 +08:00
|
|
|
expose :qrcode
|
2016-07-25 15:20:01 +08:00
|
|
|
expose :can_setting, if: lambda { |instance, options| options[:user] } do |instance, options|
|
|
|
|
current_user = options[:user]
|
2016-07-27 14:30:19 +08:00
|
|
|
|
|
|
|
my_member = instance.member_principals.where("users.id=#{current_user.id}").first
|
|
|
|
can_setting = false
|
|
|
|
if my_member && my_member.roles[0] && my_member.roles[0].id == 3
|
|
|
|
can_setting = true
|
|
|
|
end
|
2016-07-25 15:20:01 +08:00
|
|
|
can_setting
|
|
|
|
end
|
|
|
|
|
2016-07-27 14:30:19 +08:00
|
|
|
expose :is_creator, if: lambda { |instance, options| options[:user] } do |instance, options|
|
|
|
|
current_user = options[:user]
|
|
|
|
|
|
|
|
current_user.id == instance.user_id
|
|
|
|
end
|
|
|
|
|
2016-08-10 16:08:30 +08:00
|
|
|
expose :is_member, if: lambda { |instance, options| options[:user] } do |instance, options|
|
|
|
|
current_user = options[:user]
|
|
|
|
if instance[:project]
|
|
|
|
project = instance[:project]
|
|
|
|
else
|
|
|
|
project = instance
|
|
|
|
end
|
|
|
|
current_user.member_of?(project)
|
|
|
|
end
|
|
|
|
|
2016-07-27 14:30:19 +08:00
|
|
|
|
2016-07-25 15:20:01 +08:00
|
|
|
expose :member_count, if: lambda { |instance, options| options[:user] } do |instance, options|
|
|
|
|
instance.members.count
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|