Commit 0aa75809a7280e8b64f82f0e39f5b48b54880ff6

Authored by Pius Uzamere
1 parent c61d3c6b

adding api level voting to clickstream

app/controllers/prompts_controller.rb
@@ -49,8 +49,11 @@ class PromptsController < InheritedResources::Base @@ -49,8 +49,11 @@ class PromptsController < InheritedResources::Base
49 authenticate 49 authenticate
50 50
51 logger.info "#{current_user.inspect} is voting #{direction} at #{Time.now}." 51 logger.info "#{current_user.inspect} is voting #{direction} at #{Time.now}."
  52 + p = params[:click].except(:sid).merge(:visitor_id => current_user.visitors.find_or_create_by_identifier(params[:click][:sid]).id)
  53 +
52 @question = Question.find(params[:question_id]) 54 @question = Question.find(params[:question_id])
53 @prompt = @question.prompts.find(params[:id]) 55 @prompt = @question.prompts.find(params[:id])
  56 +
54 case direction 57 case direction
55 when :left 58 when :left
56 successful = c = current_user.record_vote(params['params']['auto'], @prompt, 0) 59 successful = c = current_user.record_vote(params['params']['auto'], @prompt, 0)
app/models/user.rb
@@ -30,6 +30,8 @@ class User < ActiveRecord::Base @@ -30,6 +30,8 @@ class User < ActiveRecord::Base
30 end 30 end
31 31
32 def record_vote(visitor_identifier, prompt, ordinality) 32 def record_vote(visitor_identifier, prompt, ordinality)
  33 + @click = Click.new(:what_was_clicked => 'on the API level, inside record_vote' + " with prompt id #{prompt.id}, ordinality #{ordinality.to_s}")
  34 + @click.save!
33 visitor = visitors.find_or_create_by_identifier(visitor_identifier) 35 visitor = visitors.find_or_create_by_identifier(visitor_identifier)
34 visitor.vote_for!(prompt, ordinality) 36 visitor.vote_for!(prompt, ordinality)
35 #prompt.choices.each {|c| c.compute_score; c.save!} 37 #prompt.choices.each {|c| c.compute_score; c.save!}
app/models/visitor.rb
@@ -21,10 +21,12 @@ class Visitor < ActiveRecord::Base @@ -21,10 +21,12 @@ class Visitor < ActiveRecord::Base
21 choices = prompt.choices 21 choices = prompt.choices
22 choice = choices[ordinality] #we need to guarantee that the choices are in the right order (by position) 22 choice = choices[ordinality] #we need to guarantee that the choices are in the right order (by position)
23 prompt_vote = votes.create!(:voteable => prompt) 23 prompt_vote = votes.create!(:voteable => prompt)
24 - logger.info "Visitor: #{self.inspect} voted for Prompt: #{prompt.inspect}" 24 + logger.info "Visitor: voted for Prompt: #{prompt.id.to_s}"
  25 + @click = Click.new(:what_was_clicked => "on the API level, inside visitor#vote_for! with prompt id #{prompt.id}, ordinality #{ordinality.to_s}, choice: #{choice.item.data} (id: #{choice.id})")
  26 + @click.save!
25 27
26 choice_vote = votes.create!(:voteable => choice) 28 choice_vote = votes.create!(:voteable => choice)
27 - logger.info "Visitor: #{self.inspect} voted for Choice: #{choice.inspect}" 29 + logger.info "Visitor: voted for Prompt: #{prompt.id.to_s} for choice #{choice.item.data}"
28 choice.save! 30 choice.save!
29 choice.score = choice.compute_score 31 choice.score = choice.compute_score
30 logger.info "Just computed the score for that choice and it's apparently #{choice.score}" 32 logger.info "Just computed the score for that choice and it's apparently #{choice.score}"