2021-01-14 18:10:59 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
class MemberEntity < Grape::Entity
|
|
|
|
include RequestAwareEntity
|
|
|
|
include AvatarsHelper
|
|
|
|
|
|
|
|
expose :id
|
|
|
|
expose :created_at
|
|
|
|
expose :expires_at do |member|
|
|
|
|
member.expires_at&.to_time
|
|
|
|
end
|
|
|
|
expose :requested_at
|
|
|
|
|
|
|
|
expose :created_by, if: -> (member) { member.created_by.present? } do |member|
|
|
|
|
UserEntity.represent(member.created_by, only: [:name, :web_url])
|
|
|
|
end
|
|
|
|
|
|
|
|
expose :can_update do |member|
|
|
|
|
member.can_update?
|
|
|
|
end
|
|
|
|
|
|
|
|
expose :can_remove do |member|
|
|
|
|
member.can_remove?
|
|
|
|
end
|
|
|
|
|
2021-01-28 18:09:27 +00:00
|
|
|
expose :is_direct_member do |member, options|
|
|
|
|
member.source == options[:source]
|
|
|
|
end
|
|
|
|
|
2021-01-14 18:10:59 +00:00
|
|
|
expose :access_level do
|
|
|
|
expose :human_access, as: :string_value
|
|
|
|
expose :access_level, as: :integer_value
|
|
|
|
end
|
|
|
|
|
|
|
|
expose :source do |member|
|
|
|
|
GroupEntity.represent(member.source, only: [:id, :full_name, :web_url])
|
|
|
|
end
|
|
|
|
|
2021-03-23 12:09:33 +00:00
|
|
|
expose :type
|
|
|
|
|
2021-01-14 18:10:59 +00:00
|
|
|
expose :valid_level_roles, as: :valid_roles
|
|
|
|
|
2021-06-01 21:10:06 +00:00
|
|
|
expose :user, if: -> (member) { member.user.present? } do |member, options|
|
2022-02-23 12:13:44 +00:00
|
|
|
MemberUserEntity.represent(member.user, options)
|
2021-06-01 21:10:06 +00:00
|
|
|
end
|
2021-01-14 18:10:59 +00:00
|
|
|
|
2021-10-13 12:12:20 +00:00
|
|
|
expose :state
|
|
|
|
|
2021-01-14 18:10:59 +00:00
|
|
|
expose :invite, if: -> (member) { member.invite? } do
|
|
|
|
expose :email do |member|
|
|
|
|
member.invite_email
|
|
|
|
end
|
|
|
|
|
|
|
|
expose :avatar_url do |member|
|
|
|
|
avatar_icon_for_email(member.invite_email, Member::AVATAR_SIZE)
|
|
|
|
end
|
|
|
|
|
|
|
|
expose :can_resend do |member|
|
|
|
|
member.can_resend_invite?
|
|
|
|
end
|
2021-10-13 12:12:20 +00:00
|
|
|
|
|
|
|
expose :user_state do |member|
|
|
|
|
member.respond_to?(:invited_user_state) ? member.invited_user_state : ""
|
|
|
|
end
|
2021-01-14 18:10:59 +00:00
|
|
|
end
|
2021-12-16 00:15:50 +00:00
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def current_user
|
|
|
|
options[:current_user]
|
|
|
|
end
|
2021-01-14 18:10:59 +00:00
|
|
|
end
|
|
|
|
|
2021-05-11 21:10:21 +00:00
|
|
|
MemberEntity.prepend_mod_with('MemberEntity')
|