mirror of
https://github.com/jcwimer/wrestlingApp
synced 2026-03-25 01:14:43 +00:00
107 lines
3.6 KiB
Ruby
107 lines
3.6 KiB
Ruby
class MatchesController < ApplicationController
|
|
before_action :set_match, only: [:show, :edit, :update, :destroy, :stat]
|
|
before_action :check_access, only: [:edit,:update, :stat]
|
|
|
|
# GET /matches/1
|
|
# GET /matches/1.json
|
|
def show
|
|
@tournament = @match.tournament
|
|
end
|
|
|
|
|
|
# GET /matches/1/edit
|
|
def edit
|
|
if params[:match]
|
|
@match = Match.where(:id => params[:match]).includes(:wrestlers).first
|
|
end
|
|
if @match
|
|
@wrestlers = @match.weight.wrestlers
|
|
@tournament = @match.tournament
|
|
end
|
|
session[:return_path] = "/tournaments/#{@match.tournament.id}/matches"
|
|
end
|
|
|
|
def stat
|
|
# @show_next_bout_button = false
|
|
if params[:match]
|
|
@match = Match.where(:id => params[:match]).includes(:wrestlers).first
|
|
end
|
|
@wrestlers = []
|
|
if @match
|
|
if @match.w1
|
|
@wrestler1_name = @match.wrestler1.name
|
|
@wrestler1_school_name = @match.wrestler1.school.name
|
|
@wrestler1_last_match = @match.wrestler1.last_match
|
|
@wrestlers.push(@match.wrestler1)
|
|
else
|
|
@wrestler1_name = "Not assigned"
|
|
@wrestler1_school_name = "N/A"
|
|
@wrestler1_last_match = nil
|
|
end
|
|
if @match.w2
|
|
@wrestler2_name = @match.wrestler2.name
|
|
@wrestler2_school_name = @match.wrestler2.school.name
|
|
@wrestler2_last_match = @match.wrestler2.last_match
|
|
@wrestlers.push(@match.wrestler2)
|
|
else
|
|
@wrestler2_name = "Not assigned"
|
|
@wrestler2_school_name = "N/A"
|
|
@wrestler2_last_match = nil
|
|
end
|
|
@tournament = @match.tournament
|
|
end
|
|
session[:return_path] = "/tournaments/#{@tournament.id}/matches"
|
|
session[:error_return_path] = "/matches/#{@match.id}/stat"
|
|
end
|
|
|
|
|
|
# PATCH/PUT /matches/1
|
|
# PATCH/PUT /matches/1.json
|
|
def update
|
|
respond_to do |format|
|
|
if @match.update(match_params)
|
|
if session[:return_path]
|
|
sanitized_return_path = sanitize_return_path(session[:return_path])
|
|
format.html { redirect_to sanitized_return_path, notice: 'Match was successfully updated.' }
|
|
session.delete(:return_path) # Remove the session variable
|
|
else
|
|
format.html { redirect_to "/tournaments/#{@match.tournament.id}", notice: 'Match was successfully updated.' }
|
|
end
|
|
format.json { head :no_content }
|
|
else
|
|
if session[:error_return_path]
|
|
format.html { redirect_to session.delete(:error_return_path), alert: "Match did not save because: #{@match.errors.full_messages.to_s}" }
|
|
format.json { render json: @match.errors, status: :unprocessable_entity }
|
|
else
|
|
format.html { redirect_to "/tournaments/#{@match.tournament.id}", alert: "Match did not save because: #{@match.errors.full_messages.to_s}" }
|
|
format.json { render json: @match.errors, status: :unprocessable_entity }
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
private
|
|
# Use callbacks to share common setup or constraints between actions.
|
|
def set_match
|
|
@match = Match.find(params[:id])
|
|
end
|
|
|
|
# Never trust parameters from the scary internet, only allow the white list through.
|
|
def match_params
|
|
params.require(:match).permit(:w1, :w2, :w1_stat, :w2_stat, :winner_id, :win_type, :score, :overtime_type, :finished, :round)
|
|
end
|
|
|
|
def check_access
|
|
authorize! :manage, @match.tournament
|
|
end
|
|
|
|
def sanitize_return_path(path)
|
|
uri = URI.parse(path)
|
|
params = Rack::Utils.parse_nested_query(uri.query)
|
|
params.delete("bout_number") # Remove the bout_number param
|
|
uri.query = params.to_query.presence # Rebuild the query string or set it to nil if empty
|
|
uri.to_s # Return the full path as a string
|
|
end
|
|
end
|