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'
@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
# methods fod display, adding, deleting, and manipulating candidate
# information for elections
+ ####################################################################
def new_candidates
@election = Election.find( params[:id] )
end
@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]
voter.destroy
end
- def summary_results
- end
-
- def detailed_results
+ ## methods for computing and printing results
+ ####################################################################
+ def results
@election = Election.find( params[:id] )
- @voting_rolls = []
+ votes = []
+
@election.voters.each do |voter|
if voter.vote and voter.vote.confirmed?
- @voting_rolls << voter
+ 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
- private
- def randomize_order
+ 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)
incoming_voters = RawVoterList.new( raw_voter_list )