class VoterController < ApplicationController
+ layout 'vb'
model :voter
model :vote
model :election
def index
password = params[:id]
- @voter = Voter.find_all( [ "password = ?", password ] )[0]
+ password = params[:vote][:password] if params[:vote]
+ if @voter = FullVoter.find_all( [ "password = ?", password ] )[0]
+ render :action => 'fullvote'
+ end
end
def review
- password = params[:id]
- @voter = Voter.find_all( [ "password = ?", password ] )[0]
+ if authenticate
+ # remove any existing votes and reload
+ if @voter.vote
+ @voter.vote.destroy
+ @voter.reload
+ end
- # destroy the old vote if that's what we need to do
- @voter.vote.destroy if @voter.vote
- @voter.reload
+ @vote = Vote.new
+ @voter.vote = @vote
+ @vote.votestring = params[:vote][:votestring]
+ @vote.save
+ else
+ redirect_to :action => 'index'
+ end
+ end
+
+ def confirm
+ if params[:votename]
+ if Voter.find_all( ["session_id = ?", session.session_id ])[0]
+ flash[:notice] = "You have already voted!"
+ redirect_to quickvote_url( :votename => params[:votename] )
+ else
+ @voter = QuickVoter.new()
+ @voter.election = Election.find_all( [ "name = ?",
+ params[:votename] ] )[0]
+ @voter.session_id = session.session_id
+ @voter.save
+ @voter.reload
+
+ @voter.vote = Vote.new
+ @voter.vote.votestring = params[:vote][:votestring]
+ @voter.vote.save
+ @voter.vote.confirm!
+ render :action => 'thanks'
+ end
+
+ elsif authenticate
+ @voter.vote.confirm!
+ render :action => 'thanks'
+ else
+ redirect_to :action => 'index'
+ end
+ end
- @voter.vote = Vote.new
- @voter.vote.votestring = params[:vote][:votestring]
- @voter.vote.save
- render_text "success"
+ def quickvote
+ @voter = QuickVoter.new
+ @voter.election = Election.find_all( [ "name = ?", params[:votename] ] )[0]
end
+ private
+ def authenticate
+ password = params[:id]
+ @voter = FullVoter.find_all( [ "password = ?", password ] )[0]
+ end
end
+