44 lines
1.2 KiB
Ruby
44 lines
1.2 KiB
Ruby
module Mobile
|
|
module Entities
|
|
class Project < Grape::Entity
|
|
expose :name
|
|
expose :id
|
|
expose :is_public
|
|
expose :user_id
|
|
expose :invite_code
|
|
expose :qrcode
|
|
expose :can_setting, if: lambda { |instance, options| options[:user] } do |instance, options|
|
|
current_user = options[:user]
|
|
|
|
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
|
|
can_setting
|
|
end
|
|
|
|
expose :is_creator, if: lambda { |instance, options| options[:user] } do |instance, options|
|
|
current_user = options[:user]
|
|
|
|
current_user.id == instance.user_id
|
|
end
|
|
|
|
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
|
|
|
|
|
|
expose :member_count, if: lambda { |instance, options| options[:user] } do |instance, options|
|
|
instance.members.count
|
|
end
|
|
end
|
|
end
|
|
end
|