51 lines
1.7 KiB
Ruby
51 lines
1.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module API
|
|
module V2
|
|
module Admin
|
|
# Metrics functionality
|
|
class Metrics < Grape::API
|
|
helpers do
|
|
def permitted_search_params(params)
|
|
params.slice(:created_from, :created_to, :topic, :action, :result).merge(with_user: false)
|
|
end
|
|
end
|
|
|
|
resource :metrics do
|
|
desc 'Returns main statistic in the given time period',
|
|
failure: [
|
|
{ code: 401, message: 'Invalid bearer token' }
|
|
]
|
|
params do
|
|
optional :created_from
|
|
optional :created_to
|
|
end
|
|
get do
|
|
admin_authorize! :read, User
|
|
|
|
result = {}
|
|
|
|
signup = API::V2::Queries::ActivityFilter.new(Activity.all).call(
|
|
permitted_search_params(params.merge(topic: 'account', action: 'signup', result: 'succeed'))
|
|
)
|
|
sucessful_login = API::V2::Queries::ActivityFilter.new(Activity.all).call(
|
|
permitted_search_params(params.merge(topic: 'session', action: 'login', result: 'succeed'))
|
|
)
|
|
failed_login = API::V2::Queries::ActivityFilter.new(Activity.all).call(
|
|
permitted_search_params(params.merge(topic: 'session', action: 'login', result: 'failed'))
|
|
)
|
|
|
|
result[:signups] = signup.group('date(created_at)').size
|
|
result[:sucessful_logins] = sucessful_login.group('date(created_at)').size
|
|
result[:failed_logins] = failed_login.group('date(created_at)').size
|
|
|
|
result[:pending_applications] = Label.where({ key: 'document', value: 'pending', scope: 'private' }).count
|
|
|
|
present result
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|