class Decidim::DirectVerifications::UserStats

Attributes

authorization_handler[R]
emails[RW]
organization[R]

Public Class Methods

new(organization) click to toggle source
# File lib/decidim/direct_verifications/user_stats.rb, line 6
def initialize(organization)
  @organization = organization
  @authorization_handler = ""
  @emails = []
end

Public Instance Methods

authorization_handler=(name) click to toggle source
# File lib/decidim/direct_verifications/user_stats.rb, line 15
def authorization_handler=(name)
  @workflow_manifest = nil
  @authorization_handler = name
end
authorized() click to toggle source
# File lib/decidim/direct_verifications/user_stats.rb, line 28
def authorized
  authorized_users.count
end
authorized_unconfirmed() click to toggle source
# File lib/decidim/direct_verifications/user_stats.rb, line 32
def authorized_unconfirmed
  authorized_users.where(decidim_users: { confirmed_at: nil }).count
end
registered() click to toggle source
# File lib/decidim/direct_verifications/user_stats.rb, line 20
def registered
  registered_users.count
end
unconfirmed() click to toggle source
# File lib/decidim/direct_verifications/user_stats.rb, line 24
def unconfirmed
  registered_users.where(decidim_users: { confirmed_at: nil }).count
end

Private Instance Methods

authorized_users(strict: true) click to toggle source
# File lib/decidim/direct_verifications/user_stats.rb, line 47
def authorized_users(strict: true)
  q = Decidim::Authorization.joins(:user)
  unless authorization_handler.empty?
    q = q.where(name: authorization_handler)
    if strict
      q = q.where.not(granted_at: nil)
      q = q.where("decidim_authorizations.granted_at >= :date", date: Time.current - expires_in) if expires_in
    end
  end
  q = q.where("decidim_users.decidim_organization_id=:org and decidim_users.email!=''", org: organization.id)
  return q if emails.empty?

  q.where(decidim_users: { email: emails })
end
expires_in() click to toggle source
# File lib/decidim/direct_verifications/user_stats.rb, line 62
def expires_in
  return unless workflow_manifest
  return if workflow_manifest.expires_in.zero?

  workflow_manifest.expires_in
end
registered_users() click to toggle source
# File lib/decidim/direct_verifications/user_stats.rb, line 38
def registered_users
  if authorization_handler.empty?
    filter = { decidim_organization_id: organization.id }
    filter[:email] = emails unless emails.empty?
    return User.where(filter).where.not(email: "")
  end
  authorized_users(strict: false)
end
workflow_manifest() click to toggle source
# File lib/decidim/direct_verifications/user_stats.rb, line 69
def workflow_manifest
  return if authorization_handler.empty?

  @workflow_manifest ||= Decidim::Verifications.find_workflow_manifest(authorization_handler)
end