Commit 26ecf5ed30889628ed9a1610ad26f4c456fc6c4f

Authored by Dhruv Kapadia
1 parent 0266868b

Adding idea information to Sessions controller report

app/controllers/visitors_controller.rb
... ... @@ -2,22 +2,28 @@ class VisitorsController < InheritedResources::Base
2 2 respond_to :xml, :json
3 3 before_filter :authenticate
4 4  
5   - def votes_by_session_ids
  5 + def objects_by_session_ids
6 6 session_ids = params[:session_ids]
7 7  
8 8 visitor_ids = Visitor.find(:all, :conditions => { :identifier => session_ids})
9 9 votes_by_visitor_id = Vote.with_voter_ids(visitor_ids).count(:group => :voter_id)
  10 + ideas_by_visitor_id = Item.with_creator_ids(visitor_ids).count(:group => :creator_id)
10 11  
11   - votes_by_session_id = {}
  12 + objects_by_session_id = {}
12 13  
13 14 visitor_ids.each do |e|
14 15 if votes_by_visitor_id.has_key?(e.id)
15   - votes_by_session_id[e.identifier] = votes_by_visitor_id[e.id]
  16 + objects_by_session_id[e.identifier] = Hash.new
  17 + objects_by_session_id[e.identifier]['votes'] = votes_by_visitor_id[e.id]
  18 + end
  19 + if ideas_by_visitor_id.has_key?(e.id)
  20 + objects_by_session_id[e.identifier] = Hash.new if objects_by_session_id[e.identifier].nil?
  21 + objects_by_session_id[e.identifier]['ideas'] = ideas_by_visitor_id[e.id]
16 22 end
17 23 end
18 24  
19 25 respond_to do |format|
20   - format.json { render :json => votes_by_session_id.to_json and return}
  26 + format.json { render :json => objects_by_session_id.to_json and return}
21 27 end
22 28 end
23 29  
... ...
app/models/item.rb
... ... @@ -4,6 +4,7 @@ class Item < ActiveRecord::Base
4 4 belongs_to :creator, :class_name => "Visitor", :foreign_key => "creator_id"
5 5  
6 6 named_scope :active, :conditions => { :active => true }
  7 + named_scope :with_creator_ids, lambda { |*args| {:conditions => {:creator_id=> args.first }} }
7 8  
8 9 # has_many :items_questions, :dependent => :destroy
9 10 # has_many :questions, :through => :items_questions
... ...
config/routes.rb
1 1 ActionController::Routing::Routes.draw do |map|
2 2 #map.resources :clicks
3 3 map.resources :densities
4   - map.resources :visitors, :collection => {:votes_by_session_ids => :post}
  4 + map.resources :visitors, :collection => {:objects_by_session_ids => :post}
5 5 map.resources :questions, :member => { :object_info_totals_by_date => :get,
6 6 :object_info_by_visitor_id => :get,
7 7 :export => :post,
... ...