class VoteResultStruct < ActionWebService::Struct
- member :plurality_winners, :string
- member :approval_winners, :string
- member :condorcet_winners, :string
- member :ssd_winners, :string
- member :borda_winners, :string
- member :errors, :string
+ member :plurality_winners, [:int]
+ member :approval_winners, [:int]
+ member :condorcet_winners, [:int]
+ member :ssd_winners, [:int]
+ member :borda_winners, [:int]
+ member :candidate_ids, [:int]
+ member :candidate_names, [:string]
+ member :errors, [:string]
end
class SelectricityAPI < ActionWebService::API::Base
api_method :cast_quickvote, :expects => [:int, :int, [[:int]]], :returns => [:string]
end
def get_quickvote_results(shortname)
#TODO: Validate shortname
- session=ActionController::Integration::Session.new
- debugger
- controller=session.get "quickvote/#{shortname}/results"
+ qv=QuickVote.ident_to_quickvote(shortname)
result=VoteResultStruct.new
- result.plurality_winners=session.controller.plurality_result.winners.inspect
- result.approval_winners=session.controller.approval_result.winners.inspect
- result.condorcet_winners=session.controller.condorcet_result.winners.inspect
- result.ssd_winners=session.controller.ssd_result.winners.inspect
- result.borda_winners=session.controller.borda_result.winners.inspect
+ 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
+ candidates={}
+ qv.candidates.each {|c| candidates[c.id] = c.name}
+ result.candidate_ids=candidates.keys
+ result.candidate_names=candidates.values
result
end
end