Sha256: 81de5fae6f61763ac01b836c14330927da9d00ed2370c3821ebf79ea29b95f9f

Contents?: true

Size: 1.28 KB

Versions: 4

Compression:

Stored size: 1.28 KB

Contents

# frozen_string_literal: true

module Decidim
  module ActionDelegator
    class VotedWithDirectVerification < Rectify::Query
      def initialize(relation)
        @relation = relation
      end

      def query
        relation
          .joins(:votes)
          .joins(join_on_votes_author(decrypted_authorizations))
          .where(direct_verification.or(no_authorization))
      end

      private

      attr_reader :relation

      def join_on_votes_author(arel_table)
        join_on = votes.create_on(arel_table[:decidim_user_id].eq(votes[:decidim_author_id]))
        arel_table.create_join(arel_table, join_on, Arel::Nodes::OuterJoin)
      end

      def votes
        Decidim::Consultations::Vote.arel_table
      end

      def decrypted_authorizations
        @decrypted_authorizations ||= DecryptedAuthorizations.new(subquery).query.as("decrypted_authorizations")
      end

      def subquery
        relation
          .joins(:votes)
          .joins(join_on_votes_author(authorizations))
      end

      def authorizations
        Decidim::Authorization.arel_table
      end

      def direct_verification
        decrypted_authorizations[:name].eq("direct_verifications")
      end

      def no_authorization
        decrypted_authorizations[:id].eq(nil)
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
decidim-action_delegator-0.6.0 app/queries/decidim/action_delegator/voted_with_direct_verification.rb
decidim-action_delegator-0.5.0 app/queries/decidim/action_delegator/voted_with_direct_verification.rb
decidim-action_delegator-0.4.1 app/queries/decidim/action_delegator/voted_with_direct_verification.rb
decidim-action_delegator-0.4 app/queries/decidim/action_delegator/voted_with_direct_verification.rb