Added processing and presentatin of results.
[selectricity] / app / controllers / elections_controller.rb
index 696028e1287baabe6f3431ea12c337bcee0e4238..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,6 +104,45 @@ class ElectionsController < ApplicationController
     voter.destroy
   end
   
+  ## 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
+   
+    self.results
+    breakpoint
+    @voter_list = []
+    @vote_list = []
+    @election.voters. each do |voter|
+      if voter.vote and voter.vote.confirmed?
+        @voter_list << voter.email
+       @vote_list << voter.vote
+      end
+    end
+
+    @vote_list.sort!
+    @vote_list.sort! { |a,b| a.token <=> b.token }
+  end
+
+  ## private methods
+  ####################################################################
   private
 
     def process_incoming_voters(raw_voter_list)
@@ -127,4 +170,8 @@ class ElectionsController < ApplicationController
       @raw_voter_list = RawVoterList.new
       @raw_voter_list.email = incoming_voters.email
     end
+
+    def email_voter
+    end
+
 end

Benjamin Mako Hill || Want to submit a patch?