From 0a1c2a368fe9272c97bf35f6afa4a7913081849a Mon Sep 17 00:00:00 2001 From: Dhruv Kapadia Date: Thu, 18 Feb 2010 12:26:42 -0500 Subject: [PATCH] Added aggregate query - number of votes by visitor id to support geolocation --- app/controllers/questions_controller.rb | 16 +++++++++++++++- config/routes.rb | 2 +- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/app/controllers/questions_controller.rb b/app/controllers/questions_controller.rb index 98587d9..92302ee 100644 --- a/app/controllers/questions_controller.rb +++ b/app/controllers/questions_controller.rb @@ -82,7 +82,21 @@ class QuestionsController < InheritedResources::Base # export_type = params[:export_type] # export_format = params[:export_format] #CSV always now, could expand to xml later end - + + def num_votes_by_visitor_id + authenticate + + @question = current_user.questions.find(params[:id]) + hash = Vote.count(:conditions => "question_id = #{@question.id}", :group => "voter_id") + visitor_id_hash = {} + hash.each do |visitor_id, num_votes| + visitor = Visitor.find(visitor_id) + visitor_id_hash[visitor.identifier] = num_votes + end + respond_to do |format| + format.xml{ render :xml => visitor_id_hash.to_xml and return} + end + end protected def export_votes diff --git a/config/routes.rb b/config/routes.rb index 94af3ce..9629d3a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,6 +1,6 @@ ActionController::Routing::Routes.draw do |map| map.resources :clicks - map.resources :questions, :member => { :export => :post, :set_autoactivate_ideas_from_abroad => :put, :activate => :put, :suspend => :put} do |question| + map.resources :questions, :member => { :num_votes_by_visitor_id => :get, :export => :post, :set_autoactivate_ideas_from_abroad => :put, :activate => :put, :suspend => :put} do |question| question.resources :items question.resources :prompts, :member => {:vote_left => :post, :vote_right => :post, :skip => :post, :vote => :post}, :collection => {:single => :get, :index => :get} -- libgit2 0.21.2