class Contabilidade::RestosAPagarCanceladosController < ApplicationController
	before_action :authenticate_usuario!
	before_action :autoriza_usuario!
	before_action :set_resto_a_pagar_cancelado, only: [:edit, :update, :show]
	before_action :disponibiliza_dependencias, only: [:edit, :update, :show]

	def show
	end

  def edit
		if @resto_a_pagar_cancelado.cancelamento_de_resto_a_pagar.processado?
			@resto_a_pagar_cancelado.empenho.liquidacoes.each do | liquidacao |
				if @resto_a_pagar_cancelado.liquidacoes_dos_rps_cancelados.find_by(liquidacao_id: liquidacao.id).nil?
					@resto_a_pagar_cancelado.liquidacoes_dos_rps_cancelados.build(
						liquidacao_id: liquidacao.id
					)
				end
			end
		end
	end

	def update
		if params[:adicionar_todos] == true
			unless @resto_a_pagar_cancelado.classificacao == 'individual'
				adicionar_empenhos_selecionados_pelos_filtros
			end
			disponibiliza_dependencias
			render :edit
		else
			if @resto_a_pagar_cancelado.update( resto_a_pagar_cancelado_params )
				redirect_to contabilidade_cancelamento_de_resto_a_pagar_path(@resto_a_pagar_cancelado.cancelamento_de_resto_a_pagar), notice: 'Cancelamento foi atualizado com sucesso.'
			else
				flash.now[:alert] = 'Não foi possível atualizar o cancelamento, verifique as informações.'
				disponibiliza_dependencias
				render :edit
			end
		end
	end

	def retorna_valor_unitario_do_item_de_rp
		rp_cancelado = Contabilidade::RestoAPagarCancelado.find(params[:resto_a_pagar_cancelado_id])

		valor_unitario = rp_cancelado.valor_unitario_do_item_rp(params[:item_id], params[:liquidacao_id])
		quantidade_disponivel_de_itens = rp_cancelado.quantidade_disponivel_a_cancelar_do_item(params[:item_id], params[:liquidacao_id])

		respond_to do |format|
			format.json { render json: [valor_unitario, quantidade_disponivel_de_itens]}
		end
	end
	
	private
	def set_resto_a_pagar_cancelado
		@resto_a_pagar_cancelado = Contabilidade::RestoAPagarCancelado.find(params[:id])
	end
	
	def disponibiliza_dependencias

	end
	# Permite apenas os parâmetros específicos
	def resto_a_pagar_cancelado_params
		params.require(:contabilidade_resto_a_pagar_cancelado).permit(:empenho_id, :cancelamento_de_resto_a_pagar_id, :valor_cancelado, :cancelamento_por_item, :saldo_original, :saldo_atual,
			liquidacoes_dos_rps_cancelados_attributes: [:id, :resto_a_pagar_cancelado_id, :liquidacao_id, :valor_cancelado, :_destroy, 
			itens_dos_rps_cancelados_attributes: [:id, :liquidacao_do_rp_cancelado_id, :item_id, :quantidade_cancelada, :valor_unitario, :total, :_destroy] ],
			itens_dos_rps_cancelados_attributes: [:id, :resto_a_pagar_cancelado_id, :item_id, :quantidade_cancelada, :valor_unitario, :total, :_destroy]
		)
	end
end
