class Loa::FontesDasCotasOrcamentariasController < ApplicationController
  include ControllerConcern
  before_action :authenticate_usuario!
  before_action :autoriza_usuario!
  before_action :set_fonte_da_cota_orcamentaria, only: [:edit, :update, :edit_setorial, :update_setorial]

  def edit
    if @fonte_da_cota_orcamentaria.doccs.empty?
      @fonte_da_cota_orcamentaria.gerar_doccs
    end
  end

  def update
    if !params[:loa_fonte_da_cota_orcamentaria].present? 
      if @fonte_da_cota_orcamentaria.propostas_orcamentarias_setoriais.empty?
        @fonte_da_cota_orcamentaria.gerar_propostas_orcamentarias_setoriais
      end
      
      redirect_to loa_cotas_orcamentarias_path, notice: 'Valores cadastados/atualizados com sucesso.'
    else
      if @fonte_da_cota_orcamentaria.update( fonte_da_cota_orcamentaria_params )
        if @fonte_da_cota_orcamentaria.propostas_orcamentarias_setoriais.empty?
          @fonte_da_cota_orcamentaria.gerar_propostas_orcamentarias_setoriais
        end
        redirect_to loa_cotas_orcamentarias_path, notice: 'Valores cadastados/atualizados com sucesso.'
      else
        render :edit
      end
    end
  end

  def edit_setorial
  end

  def update_setorial
    if @fonte_da_cota_orcamentaria.update( fonte_da_cota_orcamentaria_params )
				redirect_to index_setorial_loa_cotas_orcamentarias_path, notice: 'Valores cadastados/atualizados com sucesso.'
			else
				render :edit_setorial
			end
  end

  private
  def set_fonte_da_cota_orcamentaria
    @fonte_da_cota_orcamentaria = Loa::FonteDaCotaOrcamentaria.find( params[:id] )
  end

  # Permite apenas os parâmetros específicos
  def fonte_da_cota_orcamentaria_params
    params.require(:loa_fonte_da_cota_orcamentaria).permit(:id, 
      doccs_attributes: [:id, :fonte_da_cota_orcamentaria_id, :orcamento_da_despesa_id, :valor, :_destroy],
      propostas_orcamentarias_setoriais_attributes: [:id, :fonte_da_cota_orcamentaria_id, :orcamento_da_despesa_id, :valor, :_destroy]
    )
  end
end
