ssplatt/the_dw

View on GitHub
app/controllers/leagues_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
class LeaguesController < ApplicationController
  before_action :allowed_user,      only: :show
  before_action :correct_league,    only: [:edit, :update]
  before_action :admin_user,        only: :destroy
  
  def index
    @leagues = League.paginate(page: params[:page])
  end
  
  def show
    @league = League.find(params[:id])
    @team = Team.find_by(league_id: @league.id, user_id: current_user.id)
    store_league
  end
  
  def new
    @league = League.new
  end
  
  def create
    @league = League.new(league_params)
    
    numdivs = 0
    until numdivs >= league_params[:num_divisions].to_i do
      division = @league.divisions.new
      division.random_name
      division.save
      numdivs += 1
    end
    
    @division = @league.divisions.first
    @user = User.find(current_user)
    @team = @league.teams.new(:is_commissioner => true,
                              :user_id => @user.id)
    @team.random_name
    @team.seed_lineups
    @team.save
    if @league.save
      flash[:success] = "League successfully created."
      redirect_to @league
    else
      render 'new'
    end
  end
  
  def edit
    @league = League.find(params[:id])
  end
  
  def update
    @league = League.find(params[:id])
    if @league.update_attributes(league_params)
      flash[:success] = "Settings updated"
      redirect_to @league
    else
      render 'edit'
    end
  end
  
  def destroy
    League.find(params[:id]).destroy
    flash[:success] = "League deleted"
    redirect_to leagues_url
  end
  
  private

    def league_params
      params.require(:league).permit(:name, :num_teams, :num_divisions, :season, :pa_yd, :pa_td, :pa_int, :ru_yd, :ru_td, :re_yd, :re_td, :rec, :fum, :fuml, :tpc)
    end
    
    # before filters
    
    # Confirms the correct league.
    def correct_league
      @league = League.find(params[:id])
      redirect_to(@league) unless current_league?(@league)
    end
    
    # confirm user is a part of the league
    def allowed_user
      @league = League.find(params[:id])
      redirect_back_or(leagues_url) unless current_user.leagues.include?(@league)
    end
end