63 lines
3.2 KiB
Ruby
63 lines
3.2 KiB
Ruby
require_relative 'group_presenter'
|
|
|
|
module Carto
|
|
module Api
|
|
class OrganizationPresenter
|
|
|
|
def initialize(organization)
|
|
@organization = organization
|
|
end
|
|
|
|
def to_poro
|
|
return {} if @organization.nil?
|
|
filtered_user ||= @organization.owner
|
|
{
|
|
created_at: @organization.created_at,
|
|
description: @organization.description,
|
|
discus_shortname: @organization.discus_shortname,
|
|
display_name: @organization.display_name,
|
|
id: @organization.id,
|
|
name: @organization.name,
|
|
owner: {
|
|
id: @organization.owner ? @organization.owner.id : nil,
|
|
username: @organization.owner ? @organization.owner.username : nil,
|
|
avatar_url: @organization.owner ? @organization.owner.avatar_url : nil,
|
|
email: @organization.owner ? @organization.owner.email : nil,
|
|
groups: @organization.owner && @organization.owner.groups ? @organization.owner.groups.map { |g| Carto::Api::GroupPresenter.new(g).to_poro } : []
|
|
},
|
|
admins: @organization.users.where(org_admin: true).map { |u| { id: u.id } },
|
|
quota_in_bytes: @organization.quota_in_bytes,
|
|
unassigned_quota: @organization.unassigned_quota,
|
|
geocoding_quota: @organization.geocoding_quota,
|
|
here_isolines_quota: @organization.here_isolines_quota,
|
|
here_isolines_block_price: @organization.here_isolines_block_price,
|
|
obs_snapshot_quota: @organization.obs_snapshot_quota,
|
|
obs_snapshot_block_price: @organization.obs_snapshot_block_price,
|
|
obs_general_quota: @organization.obs_general_quota,
|
|
obs_general_block_price: @organization.obs_general_block_price,
|
|
mapzen_routing_quota: @organization.mapzen_routing_quota,
|
|
mapzen_routing_block_price: @organization.mapzen_routing_block_price,
|
|
geocoder_provider: @organization.geocoder_provider,
|
|
isolines_provider: @organization.isolines_provider,
|
|
routing_provider: @organization.routing_provider,
|
|
map_view_quota: @organization.map_view_quota,
|
|
twitter_datasource_quota: @organization.twitter_datasource_quota,
|
|
map_view_block_price: @organization.map_view_block_price,
|
|
geocoding_block_price: @organization.geocoding_block_price,
|
|
seats: @organization.seats,
|
|
viewer_seats: @organization.viewer_seats,
|
|
twitter_username: @organization.twitter_username,
|
|
location: @organization.location,
|
|
updated_at: @organization.updated_at,
|
|
website: @organization.website,
|
|
admin_email: @organization.admin_email,
|
|
avatar_url: @organization.avatar_url,
|
|
user_count: @organization.users.count,
|
|
password_expiration_in_d: @organization.password_expiration_in_d
|
|
}
|
|
end
|
|
|
|
end
|
|
end
|
|
end
|