Add state for votes
This commit is contained in:
parent
abc26f733f
commit
aefc722c9d
5 changed files with 177 additions and 49 deletions
62
vote.rb
62
vote.rb
|
|
@ -10,6 +10,7 @@ class Vote < ActiveRecord::Base
|
|||
has_many :ratings
|
||||
has_many :organizers
|
||||
has_many :users, through: :organizers
|
||||
validates :state, inclusion: { in: ["draft", "open", "closed"] }
|
||||
end
|
||||
|
||||
class Candidate < ActiveRecord::Base
|
||||
|
|
@ -95,7 +96,28 @@ end
|
|||
get '/votes/:id' do
|
||||
redirect '/login' unless current_user
|
||||
@vote = Vote.find_by(secure_id: params[:id])
|
||||
erb :votes_show
|
||||
case @vote.state
|
||||
when "open"
|
||||
erb :votes_show
|
||||
when "draft"
|
||||
erb :votes_edit
|
||||
when "closed"
|
||||
erb :votes_results
|
||||
else
|
||||
@vote.state = "draft"
|
||||
@vote.save
|
||||
erb :votes_edit
|
||||
end
|
||||
end
|
||||
|
||||
post '/votes/:id/edit' do
|
||||
redirect '/login' unless current_user
|
||||
@vote = Vote.find_by(secure_id: params[:id])
|
||||
redirect '/votes/' + vote.secure_id if @vote.state != "draft"
|
||||
@vote.title = params[:title]
|
||||
@vote.description = params[:description]
|
||||
@vote.save
|
||||
erb :votes_edit
|
||||
end
|
||||
|
||||
post '/votes' do
|
||||
|
|
@ -106,7 +128,9 @@ post '/votes' do
|
|||
end
|
||||
|
||||
post '/votes/:id/candidates' do
|
||||
redirect '/login' unless current_user
|
||||
@vote = Vote.find_by(secure_id: params[:id])
|
||||
redirect '/votes/' + vote.secure_id if @vote.state != "draft"
|
||||
@candidate = Candidate.new(name: params[:name],
|
||||
description: params[:description])
|
||||
@candidate.vote = @vote
|
||||
|
|
@ -114,6 +138,42 @@ post '/votes/:id/candidates' do
|
|||
redirect '/votes/' + @vote.secure_id
|
||||
end
|
||||
|
||||
post '/votes/:id/open' do
|
||||
redirect '/login' unless current_user
|
||||
@vote = Vote.find_by(secure_id: params[:id])
|
||||
redirect '/votes/' + vote.secure_id if @vote.state != "draft"
|
||||
@vote.state = "open"
|
||||
@vote.save
|
||||
redirect '/votes/' + @vote.secure_id
|
||||
end
|
||||
|
||||
post '/votes/:id/draft' do
|
||||
redirect '/login' unless current_user
|
||||
@vote = Vote.find_by(secure_id: params[:id])
|
||||
redirect '/votes/' + vote.secure_id if @vote.state != "open"
|
||||
@vote.state = "draft"
|
||||
@vote.save
|
||||
redirect '/votes/' + @vote.secure_id
|
||||
end
|
||||
|
||||
post '/votes/:id/close' do
|
||||
redirect '/login' unless current_user
|
||||
@vote = Vote.find_by(secure_id: params[:id])
|
||||
redirect '/votes/' + vote.secure_id if @vote.state != "open"
|
||||
@vote.state = "closed"
|
||||
@vote.save
|
||||
redirect '/votes/' + @vote.secure_id
|
||||
end
|
||||
|
||||
post '/votes/:id/reopen' do
|
||||
redirect '/login' unless current_user
|
||||
@vote = Vote.find_by(secure_id: params[:id])
|
||||
redirect '/votes/' + vote.secure_id if @vote.state != "closed"
|
||||
@vote.state = "open"
|
||||
@vote.save
|
||||
redirect '/votes/' + @vote.secure_id
|
||||
end
|
||||
|
||||
post '/votes/:id/ratings' do
|
||||
redirect '/login' unless current_user
|
||||
vote = Vote.find_by(secure_id: params[:id])
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue