Sha256: 162c3bad9baeb82d8009873ff5e5e6f6703acb813b4124a379d939fa1a18d973
Contents?: true
Size: 1.68 KB
Versions: 2
Compression:
Stored size: 1.68 KB
Contents
# frozen_string_literal: true module Decidim module Admin # A class used to filter User's by their officialization state. class UsersOfficialization < Rectify::Query # Syntactic sugar to initialize the class and return the queried objects. # # organization - the Decidim::Organization where search will be scoped to # name_query - query to filter user group names # state - evaluation state to be used as a filter def self.for(organization, name_query = nil, state = nil) new(organization, name_query, state).query end # Initializes the class. # # organization - the Decidim::Organization where search will be scoped to # name_query - query to filter user group names # state - officialization state to be used as a filter def initialize(organization, name_query = nil, state = nil) @organization = organization @name_query = name_query @state = state end # List the User groups by the diferents filters. def query users = Decidim::User.where(organization: organization) users = filter_by_search(users) users = filter_by_state(users) users end private attr_reader :name_query, :state, :organization def filter_by_search(users) return users if name_query.blank? users.where("LOWER(name) LIKE LOWER(?)", "%#{name_query}%") end def filter_by_state(users) case state when "officialized" users.where.not(officialized_at: nil) when "not_officialized" users.where(officialized_at: nil) else users end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
decidim-admin-0.10.1 | app/queries/decidim/admin/users_officialization.rb |
decidim-admin-0.10.0 | app/queries/decidim/admin/users_officialization.rb |