Added processing and presentatin of results.
[selectricity-live] / app / controllers / elections_controller.rb
index 4a85c293b5ea4b424cf78c852e39ca45496feaec..4cb72bc779d29fdf7deae3f6016fabfaf005144a 100644 (file)
@@ -1,8 +1,8 @@
 class ElectionsController < ApplicationController
   model :raw_voter_list, :voter, :vote, :candidate
 
-
-  # general methods for dealing with elections
+  ## general methods for dealing with elections
+  ####################################################################
   def index
     list
     render :action => 'list'
@@ -12,8 +12,10 @@ class ElectionsController < ApplicationController
     @election_pages, @elections = paginate :elections, :per_page => 10
   end
 
-  # methods for displaying, creating, and manipulating election overview
-  # data
+  ## methods for displaying, creating,
+  ## and manipulating election overview data
+  ####################################################################
+
   def show
     @election = Election.find(params[:id])
   end
@@ -53,6 +55,7 @@ class ElectionsController < ApplicationController
 
   # methods fod display, adding, deleting, and manipulating candidate
   # information for elections
+  ####################################################################
   def new_candidates
     @election = Election.find( params[:id] )
   end
@@ -75,8 +78,9 @@ class ElectionsController < ApplicationController
     @election = Election.find( params[:id] )
   end
 
-  # methods for displaying, adding, deleting, and manipulating voters
-  # for a particular election
+  ## methods for displaying, adding, deleting, and manipulating voters
+  ## for a particular election
+  ####################################################################
   def new_voters
     @election = Election.find( params[:id] )
     if params.has_key?[:raw_voter_list]
@@ -100,15 +104,33 @@ class ElectionsController < ApplicationController
     voter.destroy
   end
   
-  def summary_results 
+  ## methods for computing and printing results
+  ####################################################################
+  def results
+    @election = Election.find( params[:id] )
+    votes = []
+
+    @election.voters.each do |voter|
+      if voter.vote and voter.vote.confirmed?
+        votes << voter.vote.rankings.sort.collect {|vote| vote.candidate_id}
+      end
+    end
+    
+    @voteobj = CloneproofSSDVote.new(votes)
+    @resultobj = @voteobj.result
+    @winners = @resultobj.winners
+    
+    @candidates_by_id = {}
+    @election.candidates.each {|cand| @candidates_by_id[cand.id] = cand}
   end
   
   def detailed_results
-    @election = Election.find( params[:id] )
-
+   
+    self.results
+    breakpoint
     @voter_list = []
     @vote_list = []
-    @election.voters.each do |voter|
+    @election.voters. each do |voter|
       if voter.vote and voter.vote.confirmed?
         @voter_list << voter.email
        @vote_list << voter.vote
@@ -117,13 +139,11 @@ class ElectionsController < ApplicationController
 
     @vote_list.sort!
     @vote_list.sort! { |a,b| a.token <=> b.token }
-    #breakpoint
-
   end
-  
+
+  ## private methods
+  ####################################################################
   private
-    def randomize_order
-    end
 
     def process_incoming_voters(raw_voter_list)
       incoming_voters = RawVoterList.new( raw_voter_list )

Benjamin Mako Hill || Want to submit a patch?