class PlayersController < ApplicationController
  before_action :set_player, only: %i[ show edit update destroy ]

  # GET /players or /players.json
  def index
    @players = Player.all
  end

  # GET /players/1 or /players/1.json
  def show
  end

  # GET /players/new
  def new
    @player = Player.new
  end

  # GET /players/1/edit
  def edit
  end

  # GET /players or /players.json
  def change_signup
    player = Player.find(params[:id])
    game = Game.find(params[:game_id])

    if params[:act].eql? "disponible"
      # Marcar como disponible
      message = "#{player.name} #{player.last_name} está disponible"
      games_player = GamesPlayer.create(game: game, player: player, played: false)
    else
      games_player = GamesPlayer.where(game_id: params[:game_id], player: player).first
      if params[:act].eql? "no-disponible"
        # Marcar como no disponible
        message = "#{player.name} #{player.last_name} no está disponible"
        games_player.destroy
      elsif params[:act].eql? "convocar"
        message = "#{player.name} #{player.last_name} ha sido convocado"
        # Marcar como convocado
        games_player.played = true
        games_player.save
      elsif params[:act].eql? "desconvocar"
        # Marcar como no convocado
        message = "#{player.name} #{player.last_name} ha sido desconvocado"
        games_player.played = false
        games_player.save
      end
    end

    respond_to do |format|
      format.html { redirect_to team_url(game.team), notice: message }
    end
  end

  # POST /players or /players.json
  def create
    @player = Player.new(player_params)

    respond_to do |format|
      if @player.save
        format.html { redirect_to player_url(@player), notice: "Player was successfully created." }
        format.json { render :show, status: :created, location: @player }
      else
        format.html { render :new, status: :unprocessable_entity }
        format.json { render json: @player.errors, status: :unprocessable_entity }
      end
    end
  end

  # PATCH/PUT /players/1 or /players/1.json
  def update
    respond_to do |format|
      if @player.update(player_params)
        format.html { redirect_to player_url(@player), notice: "Player was successfully updated." }
        format.json { render :show, status: :ok, location: @player }
      else
        format.html { render :edit, status: :unprocessable_entity }
        format.json { render json: @player.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /players/1 or /players/1.json
  def destroy
    @player.destroy

    respond_to do |format|
      format.html { redirect_to players_url, notice: "Player was successfully destroyed." }
      format.json { head :no_content }
    end
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_player
      @player = Player.find(params[:id])
    end

    # Only allow a list of trusted parameters through.
    def player_params
      params.require(:player).permit(:name, :lastname, :team_id, :points, :type)
    end
end
