X-Git-Url: https://projects.mako.cc/source/selectricity-live/blobdiff_plain/560828ebdd364de4ca09d61764f19215a9e29e59..dc7d60a0de460c72d292b43616eb97a8b34741c8:/app/controllers/elections_controller.rb diff --git a/app/controllers/elections_controller.rb b/app/controllers/elections_controller.rb index 4a85c29..4cb72bc 100644 --- a/app/controllers/elections_controller.rb +++ b/app/controllers/elections_controller.rb @@ -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 )