
class MachosController < ApplicationController
  before_action :user_is_admin?
  before_action :set_macho, only: %i[ show edit update destroy ]
  layout "admin"

  # GET /machos
  def index
    @routines = Program.where(tipo: "routine").order(:number)
    @diets = Program.where(tipo: "diet").order(:number)
    @meals = Program.where(tipo: "meal").order(:number)
  end

  def sort
    ids = params["ids"].split("_")
    ids.each_with_index { |id, index| Program.find(id.to_i).update(number: index)  }
  end

  def new
    @plan = Plan.create(user_id: current_user.id)
    @macho = Program.new({ tipo: params[:tipo], plan_id: @plan.id })
  end

  def create
    @macho = Program.new(macho_params)
    if @macho.save
      @macho.update(plan: Plan.create({ init: Date.yesterday, finish: Date.yesterday, trainer_id: current_user.id, user_id: current_user.id }))
      redirect_to "/plans/#{@macho.plan.id}/edit" #, notice: "Programa #{@macho.title} creado"
    else
      render :new
    end
  end

  def update
    if @macho.update(macho_params)
      redirect_to machos_path #, notice: 'machoa actualizado'
    else
      render :edit
    end
  end

  def destroy
    @macho.destroy
    redirect_to machos_url #, notice: 'machoa eliminado'
  end

  private

    def set_macho
      @macho = Program.find(params[:id])
    end

    def macho_params
      params.require(:program).permit(:plan_id, :title, :number, :tipo)
    end

end