Sha256: 247bcbb3b002932289c6239e4f0a9d4846b0eebe94edf01af774fdcbc7dac832

Contents?: true

Size: 1.91 KB

Versions: 32

Compression:

Stored size: 1.91 KB

Contents

# frozen_string_literal: true

require "active_support/concern"

module Decidim
  module PollingStations
    module Admin
      module Filterable
        extend ActiveSupport::Concern

        included do
          include Decidim::Admin::Filterable

          private

          def base_query
            # Includes the officers (president and managers) and their correspective decidim users when they(=officers) are present
            query = collection
                    .joins("LEFT JOIN decidim_votings_polling_officers president ON president.presided_polling_station_id = decidim_votings_polling_stations.id
                            LEFT JOIN decidim_users president_user ON president_user.id = president.decidim_user_id
                            LEFT JOIN decidim_votings_polling_officers managers ON managers.managed_polling_station_id = decidim_votings_polling_stations.id
                            LEFT JOIN decidim_users manager_user ON manager_user.id = managers.decidim_user_id")

            filter_by_assigned(query)
          end

          def search_field_predicate
            :title_or_address_or_manager_name_or_manager_email_or_manager_nickname_or_president_name_or_president_email_or_president_nickname_cont
          end

          def filters
            [
              :officers_assigned_eq
            ]
          end

          def filters_with_values
            {
              officers_assigned_eq: [:assigned, :unassigned]
            }
          end

          def filter_by_assigned(query)
            case ransack_params[:officers_assigned_eq]
            when :assigned.to_s
              query.where(Arel.sql("president.id IS NOT NULL")).where(Arel.sql("managers.id IS NOT NULL"))
            when :unassigned.to_s
              query.where(Arel.sql("president.id IS NULL OR managers.id IS NULL"))
            else
              query
            end
          end
        end
      end
    end
  end
end

Version data entries

32 entries across 32 versions & 1 rubygems

Version Path
decidim-elections-0.28.5 app/controllers/concerns/decidim/polling_stations/admin/filterable.rb
decidim-elections-0.28.4 app/controllers/concerns/decidim/polling_stations/admin/filterable.rb
decidim-elections-0.27.9 app/controllers/concerns/decidim/polling_stations/admin/filterable.rb
decidim-elections-0.28.3 app/controllers/concerns/decidim/polling_stations/admin/filterable.rb
decidim-elections-0.27.8 app/controllers/concerns/decidim/polling_stations/admin/filterable.rb
decidim-elections-0.28.2 app/controllers/concerns/decidim/polling_stations/admin/filterable.rb
decidim-elections-0.27.7 app/controllers/concerns/decidim/polling_stations/admin/filterable.rb
decidim-elections-0.28.1 app/controllers/concerns/decidim/polling_stations/admin/filterable.rb
decidim-elections-0.27.6 app/controllers/concerns/decidim/polling_stations/admin/filterable.rb
decidim-elections-0.26.10 app/controllers/concerns/decidim/polling_stations/admin/filterable.rb
decidim-elections-0.26.9 app/controllers/concerns/decidim/polling_stations/admin/filterable.rb
decidim-elections-0.28.0 app/controllers/concerns/decidim/polling_stations/admin/filterable.rb
decidim-elections-0.27.5 app/controllers/concerns/decidim/polling_stations/admin/filterable.rb
decidim-elections-0.28.0.rc5 app/controllers/concerns/decidim/polling_stations/admin/filterable.rb
decidim-elections-0.28.0.rc4 app/controllers/concerns/decidim/polling_stations/admin/filterable.rb
decidim-elections-0.26.8 app/controllers/concerns/decidim/polling_stations/admin/filterable.rb
decidim-elections-0.27.4 app/controllers/concerns/decidim/polling_stations/admin/filterable.rb
decidim-elections-0.27.3 app/controllers/concerns/decidim/polling_stations/admin/filterable.rb
decidim-elections-0.26.7 app/controllers/concerns/decidim/polling_stations/admin/filterable.rb
decidim-elections-0.26.5 app/controllers/concerns/decidim/polling_stations/admin/filterable.rb