X-Git-Url: https://projects.mako.cc/source/selectricity/blobdiff_plain/bbd877082e64db53c96467431cb766c75f14c96c..ad088c1324d08a65f6f5336bedf7a88a8a8950e7:/app/models/selectricity_service.rb diff --git a/app/models/selectricity_service.rb b/app/models/selectricity_service.rb deleted file mode 100644 index 4075f64..0000000 --- a/app/models/selectricity_service.rb +++ /dev/null @@ -1,102 +0,0 @@ -require 'action_controller/integration' - -class SelectricityService < ActionWebService::Base - web_service_api SelectricityAPI - def cast_quickvote(election_name, voter_id, vote_list) - election = QuickVote.ident_to_quickvote election_name - if election - candidates=election.candidates.collect { |c| c.id } - vote_list[0].each do |vote| - raise ArgumentError.new "Invalid Candidate ID #{vote}" unless candidates.index(vote) - end - raise ArgumentError.new "You must rank all candidates" unless candidates.length <= vote_list[0].length - raise ArgumentError.new "Please rank each candidate only once" if vote_list[0].uniq! - voter = QuickVoter.new - voter.election = election - voter.ipaddress = "XMLRPC Request" - voter.session_id = "XMLRPC:#{voter_id}" - voter.vote=Vote.new - voter.vote.votes=vote_list[0] - voter.vote.time = Time.now - voter.save! - voter.vote.confirm! - voter.save! - end - end - def quickvote_candidate_ids_to_names(shortname, id_list) - qv=QuickVote.ident_to_quickvote(shortname) - candidates={} - return [] unless qv - qv.results - qv.candidates.each {|c| candidates[c.id] = c} - results=[] - id_list.each { |id| - name=candidates[id] - if name - results << name - else - results << "" - end - } - results - end - def get_quickvote_results(shortname) - #TODO: Validate shortname - qv=QuickVote.ident_to_quickvote(shortname) - result=VoteResultStruct.new - result.errors=[] - unless qv - result.errors << "No quickvote with name #{shortname} found!" - return result - end - qv.results - result.plurality_winners=qv.plurality_result.winners - result.approval_winners=qv.approval_result.winners - result.condorcet_winners=qv.condorcet_result.winners - result.ssd_winners=qv.ssd_result.winners - result.borda_winners=qv.borda_result.winners - result - end - def get_quickvote_candidate_map(shortname) - qv=QuickVote.ident_to_quickvote(shortname) - result=CandidateMap.new - result.errors=[] - unless qv - result.errors << "No quickvote with name #{shortname} found!" - return result - end - candidates={} - qv.candidates.each {|c| candidates[c.id] = c.name} - result.candidate_ids=candidates.keys - result.candidate_names=candidates.values - result - end - def get_quickvote_votes(shortname) - qv=QuickVote.ident_to_quickvote(shortname) - votes=Array.new - unless qv - return result - end - qv.votes.each do |vote| - votes << VoteInfo.new(:voter_id => vote.voter.id, :voter_ipaddress => vote.voter.ipaddress, :vote_time => vote.time.to_i) - end - return votes - end - def list_quickvotes() - all=Array.new - QuickVote.find_all.each do |election| - all << get_quickvote(election.name) - end - return all - end - def get_quickvote(shortname) - return ElectionStruct.new unless election=QuickVote.ident_to_quickvote(shortname) - return ElectionStruct.new (:id => election.id, :name => election.name, :description => election.description, :candidate_ids => election.candidates.collect {|c| c.id }, :candidate_names => election.candidates.collect {|c| c.name } ) - end - def create_quickvote(election) - qv=QuickVote.new(:name => election.name, :description => election.description) - qv.candidatelist=election.candidate_names - return qv.save.to_s - end - -end