Class: Decidim::ActionDelegator::ElectionsQuestionWeightedResponses
- Inherits:
-
Object
- Object
- Decidim::ActionDelegator::ElectionsQuestionWeightedResponses
- Defined in:
- app/queries/decidim/action_delegator/elections_question_weighted_responses.rb
Instance Method Summary collapse
-
#initialize(question, settings) ⇒ ElectionsQuestionWeightedResponses
constructor
A new instance of ElectionsQuestionWeightedResponses.
- #query ⇒ Object
Constructor Details
#initialize(question, settings) ⇒ ElectionsQuestionWeightedResponses
Returns a new instance of ElectionsQuestionWeightedResponses.
6 7 8 9 |
# File 'app/queries/decidim/action_delegator/elections_question_weighted_responses.rb', line 6 def initialize(question, settings) @question = question @settings = settings end |
Instance Method Details
#query ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 |
# File 'app/queries/decidim/action_delegator/elections_question_weighted_responses.rb', line 11 def query return Decidim::Elections::ResponseOption.none if question.blank? || settings.blank? subquery = ElectionsQuestionResponsesByType.new(question, settings).query Decidim::Elections::ResponseOption.unscoped .joins("INNER JOIN (#{subquery.to_sql}) AS subquery ON subquery.id = #{Decidim::Elections::ResponseOption.table_name}.id") .select( "#{Decidim::Elections::ResponseOption.table_name}.*, SUM(subquery.votes_total * subquery.ponderation_weight) AS weighted_votes_total" ) .group("#{Decidim::Elections::ResponseOption.table_name}.id") end |