Commit fff49b4783dcf618384260c1648e3f9bc7582864
1 parent
2bebac97
Exists in
master
and in
1 other branch
Changes to support viewing site wide data
Showing
2 changed files
with
56 additions
and
8 deletions
Show diff stats
app/controllers/questions_controller.rb
@@ -102,25 +102,42 @@ class QuestionsController < InheritedResources::Base | @@ -102,25 +102,42 @@ class QuestionsController < InheritedResources::Base | ||
102 | 102 | ||
103 | def num_votes_by_visitor_id | 103 | def num_votes_by_visitor_id |
104 | @question = current_user.questions.find(params[:id]) | 104 | @question = current_user.questions.find(params[:id]) |
105 | - hash = Vote.count(:conditions => "question_id = #{@question.id}", :group => "voter_id") | 105 | + |
106 | + votes_by_visitor_id= Vote.all(:select => 'visitors.identifier as thevi, count(*) as the_votes_count', | ||
107 | + :joins => :voter, | ||
108 | + :conditions => {:question_id => @question.id }, | ||
109 | + :group => "voter_id") | ||
110 | + | ||
106 | visitor_id_hash = {} | 111 | visitor_id_hash = {} |
107 | - hash.each do |visitor_id, num_votes| | ||
108 | - visitor = Visitor.find(visitor_id) | ||
109 | - visitor_id_hash[visitor.identifier] = num_votes | 112 | + |
113 | + votes_by_visitor_id.each do |visitor| | ||
114 | + visitor_id_hash[visitor.thevi] = visitor.the_votes_count | ||
115 | + visitor_id_hash[visitor.thevi] = visitor.the_votes_count | ||
110 | end | 116 | end |
111 | respond_to do |format| | 117 | respond_to do |format| |
112 | format.xml{ render :xml => visitor_id_hash.to_xml and return} | 118 | format.xml{ render :xml => visitor_id_hash.to_xml and return} |
113 | end | 119 | end |
114 | end | 120 | end |
115 | 121 | ||
116 | - def object_info_totals_by_date | ||
117 | - authenticate | 122 | + def all_num_votes_by_visitor_id |
123 | + votes_by_visitor_id= Vote.all(:select => 'visitors.identifier as thevi, count(*) as the_votes_count', | ||
124 | + :joins => :voter, | ||
125 | + :group => "voter_id") | ||
126 | + visitor_id_hash = {} | ||
127 | + votes_by_visitor_id.each do |visitor| | ||
128 | + visitor_id_hash[visitor.thevi] = visitor.the_votes_count | ||
129 | + visitor_id_hash[visitor.thevi] = visitor.the_votes_count | ||
130 | + end | ||
131 | + respond_to do |format| | ||
132 | + format.xml{ render :xml => visitor_id_hash.to_xml and return} | ||
133 | + end | ||
134 | + end | ||
118 | 135 | ||
136 | + def object_info_totals_by_date | ||
119 | object_type = params[:object_type] | 137 | object_type = params[:object_type] |
120 | 138 | ||
121 | @question = current_user.questions.find(params[:id]) | 139 | @question = current_user.questions.find(params[:id]) |
122 | if object_type == 'votes' | 140 | if object_type == 'votes' |
123 | - # eventually allow for users to specify type of export through params[:type] | ||
124 | hash = Vote.count(:conditions => "question_id = #{@question.id}", :group => "date(created_at)") | 141 | hash = Vote.count(:conditions => "question_id = #{@question.id}", :group => "date(created_at)") |
125 | elsif object_type == 'user_submitted_ideas' | 142 | elsif object_type == 'user_submitted_ideas' |
126 | hash = Choice.count(:include => 'item', | 143 | hash = Choice.count(:include => 'item', |
@@ -140,6 +157,29 @@ class QuestionsController < InheritedResources::Base | @@ -140,6 +157,29 @@ class QuestionsController < InheritedResources::Base | ||
140 | format.xml { render :xml => hash.to_xml and return} | 157 | format.xml { render :xml => hash.to_xml and return} |
141 | end | 158 | end |
142 | end | 159 | end |
160 | + | ||
161 | + def all_object_info_totals_by_date | ||
162 | + object_type = params[:object_type] | ||
163 | + | ||
164 | + if object_type == 'votes' | ||
165 | + hash = Vote.count(:group => "date(created_at)") | ||
166 | + elsif object_type == 'user_submitted_ideas' | ||
167 | + hash = Choice.count(:include => ['item', 'question'], | ||
168 | + :conditions => "items.creator_id <> questions.creator_id", | ||
169 | + :group => "date(choices.created_at)") | ||
170 | + elsif object_type == 'user_sessions' | ||
171 | + result = Vote.find(:all, :select => 'date(created_at) as date, voter_id, count(*) as vote_count', | ||
172 | + :group => 'date(created_at), voter_id') | ||
173 | + hash = Hash.new(0) | ||
174 | + result.each do |r| | ||
175 | + hash[r.date]+=1 | ||
176 | + end | ||
177 | + end | ||
178 | + | ||
179 | + respond_to do |format| | ||
180 | + format.xml { render :xml => hash.to_xml and return} | ||
181 | + end | ||
182 | + end | ||
143 | 183 | ||
144 | protected | 184 | protected |
145 | def export_votes | 185 | def export_votes |
config/routes.rb
1 | ActionController::Routing::Routes.draw do |map| | 1 | ActionController::Routing::Routes.draw do |map| |
2 | #map.resources :clicks | 2 | #map.resources :clicks |
3 | map.resources :visitors, :collection => {:votes_by_session_ids => :post} | 3 | map.resources :visitors, :collection => {:votes_by_session_ids => :post} |
4 | - map.resources :questions, :member => { :object_info_totals_by_date => :get, :num_votes_by_visitor_id => :get, :export => :post, :set_autoactivate_ideas_from_abroad => :put, :activate => :put, :suspend => :put}, :collection => {:recent_votes_by_question_id => :get} do |question| | 4 | + map.resources :questions, :member => { :object_info_totals_by_date => :get, |
5 | + :num_votes_by_visitor_id => :get, | ||
6 | + :export => :post, | ||
7 | + :set_autoactivate_ideas_from_abroad => :put, | ||
8 | + :activate => :put, | ||
9 | + :suspend => :put}, | ||
10 | + :collection => {:all_num_votes_by_visitor_id => :get, | ||
11 | + :all_object_info_totals_by_date => :get, | ||
12 | + :recent_votes_by_question_id => :get} do |question| | ||
5 | question.resources :items | 13 | question.resources :items |
6 | question.resources :prompts, :member => {:vote_left => :post, :vote_right => :post, :skip => :post, :vote => :post}, | 14 | question.resources :prompts, :member => {:vote_left => :post, :vote_right => :post, :skip => :post, :vote => :post}, |
7 | :collection => {:single => :get, :index => :get} | 15 | :collection => {:single => :get, :index => :get} |