X-Git-Url: https://projects.mako.cc/source/selectricity/blobdiff_plain/5a8b533b5abec8dc24674e4ef084b0b9779da8af..dc7d60a0de460c72d292b43616eb97a8b34741c8:/app/controllers/elections_controller.rb diff --git a/app/controllers/elections_controller.rb b/app/controllers/elections_controller.rb index 696028e..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,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