diff options
author | nfoy <nfoy@purdue.edu> | 2014-04-27 23:05:31 -0400 |
---|---|---|
committer | nfoy <nfoy@purdue.edu> | 2014-04-27 23:05:31 -0400 |
commit | deaf1f5db268b8fd2ff1838e461c8142d3882dc8 (patch) | |
tree | edaa5f8da18649aa7abdf5467d704b4792c74f89 /app/controllers | |
parent | 17169088974477c2702377a5ea3e14afff62e009 (diff) | |
parent | 2d7313767442956eab00671ac555c0ce4e583b5f (diff) |
Merge branch 'master' of https://github.com/LukeShu/leaguer
Diffstat (limited to 'app/controllers')
-rw-r--r-- | app/controllers/matches_controller.rb | 141 | ||||
-rw-r--r-- | app/controllers/sessions_controller.rb | 2 | ||||
-rw-r--r-- | app/controllers/tournaments_controller.rb | 8 |
3 files changed, 48 insertions, 103 deletions
diff --git a/app/controllers/matches_controller.rb b/app/controllers/matches_controller.rb index 4c92e67..bed06ba 100644 --- a/app/controllers/matches_controller.rb +++ b/app/controllers/matches_controller.rb @@ -24,108 +24,61 @@ class MatchesController < ApplicationController # PATCH/PUT /tournaments/1/matches/1 # PATCH/PUT /tournaments/1/matches/1.json def update - case params[:update_action] - when "start" - # - # Redirect to the current match page for this tournament with the correct sampling view rendered - # - - @match.status = 1 - respond_to do |format| - if @match.save - format.html { redirect_to tournament_match_path(@tournament, @match), notice: 'Match has started.' } - format.json { head :no_content } - else - format.html { redirect_to @tournament, notice: "You don't have permission to start this match." } - format.json { render json: "Permission denied", status: :forbidden } - end - end - when "finish" - # - # Get the winner and blowout status from the params given by the correct sampling view - # - - unless @match.tournament_stage.tournament.sampling.sampling_done? - @match.tournament_stage.tournament.sampling.handle_user_interaction(@match, current_user, params) - end - - # Skip peer evaluation if there aren't enough players per team - peer = false - @match.teams.each do |team| - if team.users.count > 2 - peer = true + case @match.status + when 0 + # Created, waiting to be scheduled + when 1 + # Scheduled, waiting to start + if (@tournament.hosts.include? current_user) and (params[:update_action] == "start") + @match.status = 2 + respond_to do |format| + if @match.save + format.html { redirect_to tournament_match_path(@tournament, @match), notice: 'Match has started.' } + format.json { head :no_content } + else + format.html { render action: 'show' } + format.json { render json: @match.errors, status: :unprocessable_entity } + end end + return end - @match.status = peer ? 2 : 3 - - respond_to do |format| - if @match.save - format.html { redirect_to tournament_match_path(@tournament, @match), notice: 'Peer evaluation started.' } - format.json { head :no_content } - else - format.html { redirect_to @tournament, notice: "Permission denied" } - format.json { render json: "Permission denied", status: :forbidden } - end - end - when "peer" - # - # Update user scores via scoring method - # - - #update this to use scoring interface - - order = params[:review_action] - base_score = 2 - next_score = 3 - order.split(",").reverse.each do |elem| - player_score = base_score - if @match.winner.user.include?(@current_user) - player_score += 10 - else - player_score += 7 - end - Score.create(user: elem, match: @match, value: player_score ) - base_score = next_score - next_score += base_score - end - - @match.submitted_peer_evaluations += 1 - players = []; @match.teams.each{|t| players.concat(t.users.all)} - if (@match.submitted_peer_evaluations == players.count) + when 2 + # Started, waiting to finish + @match.handle_sampling(params) + if @match.finished? @match.status = 3 - end - - - respond_to do |format| - if @match.save - format.html { redirect_to tournament_match_path(@tournament, @match), notice: 'Scores Submitted' } - format.json { head :no_content } - else - format.html { redirect_to @tournament, notice: "You don't have permission to start this match." } - format.json { render json: "Permission denied", status: :forbidden } + respond_to do |format| + if @match.save + format.html { redirect_to tournament_match_path(@tournament, @match), notice: 'Match has finished.' } + format.json { head :no_content } + else + format.html { render action: 'show' } + format.json { render json: @match.errors, status: :unprocessable_entity } + end end + return end - when "reset" - # - # Reset Match Status to 1 in case something needs to be replayed. - # - - @match.status = 1 - respond_to do |format| - if @match.save - format.html { redirect_to tournament_match_path(@tournament, @match), notice: 'Match Status Reset to 1' } - format.json { head :no_content } - else - format.html { redirect_to @tournament, notice: "You don't have permission to start this match." } - format.json { render json: "Permission denied", status: :forbidden } + when 3 + if (@tournament.hosts.include? current_user) and (params[:update_action] == "start") + ok = true + ActiveRecord::Base.transaction do + ok &= @match.statitistics.destroy_all + @match.status = 1 + ok &= @match.save end - end - else - respond_to do |format| - format.html { redirect_to @tournament, notice: "Invalid action", status: :unprocessable_entity } - format.json { render json: @tournament.errors, status: :unprocessable_entity } + respond_to do |format| + if @match.save + format.html { redirect_to tournament_match_path(@tournament, @match), notice: 'Match has finished.' } + format.json { head :no_content } + else + format.html { render action: 'show' } + format.json { render json: @match.errors, status: :unprocessable_entity } + end + end + return end end + redirect_to tournament_match_path(@tournament, @match) end private diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index a0390ad..9f0a8e3 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -18,7 +18,7 @@ class SessionsController < ApplicationController if @user && @user.authenticate(params[:session][:password]) sign_in @user format.html { redirect_to root_path } - #format.json { #TODO } + #format.json { # TODO } else format.html { render action: 'new' } format.json { render json: @user.errors, status: :unprocessable_entity } diff --git a/app/controllers/tournaments_controller.rb b/app/controllers/tournaments_controller.rb index 2e854a2..c06c16c 100644 --- a/app/controllers/tournaments_controller.rb +++ b/app/controllers/tournaments_controller.rb @@ -87,14 +87,6 @@ class TournamentsController < ApplicationController end end - def create_stage - - # stage = @tournament.stages.new - # stage.create(TODO:PARAMETERS) - # @tournament.stages.push(stage) - - end - # PATCH/PUT /tournaments/1 # PATCH/PUT /tournaments/1.json def update |