Sha256: 426f3dcfeee3d1599c555cd9ef7a0b56a66c8f28c9f7c5e40fab5198929eb258

Contents?: true

Size: 1.45 KB

Versions: 1

Compression:

Stored size: 1.45 KB

Contents

# frozen_string_literal: true
module Hyrax
  module DashboardHelperBehavior
    def on_the_dashboard?
      params[:controller].match(%r{^hyrax/dashboard|hyrax/my})
    end

    # @param user [User]
    # @param where [Hash] applied as the where clause when querying the Hyrax::WorkRelation
    # @return [Integer] number of works matching the where that the user deposited
    # @see Hyrax::WorkRelation
    def number_of_works(user = current_user, where: { generic_type_sim: "Work" })
      field_pairs = field_pairs(user)
      field_pairs.merge!(where)
      count(Hyrax::SolrQueryBuilderService.construct_query(field_pairs))
    rescue RSolr::Error::ConnectionRefused
      'n/a'
    end

    # @param user [User]
    # @return [Integer] number of FileSets the user deposited
    def number_of_files(user = current_user)
      count(Hyrax::SolrQueryBuilderService.construct_query_for_model(::FileSet, field_pairs(user)))
    rescue RSolr::Error::ConnectionRefused
      'n/a'
    end

    # @param user [User]
    # @return [Integer] number of Collections the user created
    def number_of_collections(user = current_user)
      count(Hyrax::SolrQueryBuilderService.construct_query_for_model(::Collection, field_pairs(user)))
    rescue RSolr::Error::ConnectionRefused
      'n/a'
    end

    private

    def field_pairs(user)
      { DepositSearchBuilder.depositor_field => user.user_key }
    end

    def count(query)
      Hyrax::SolrService.count(query)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
hyrax-3.0.2 app/helpers/hyrax/dashboard_helper_behavior.rb