Initial commit
This commit is contained in:
50
app/api/v2/admin/metrics.rb
Normal file
50
app/api/v2/admin/metrics.rb
Normal file
@@ -0,0 +1,50 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user