module Obra
	class Obra::ComponentesDaOperacaoDeCreditoController < ApplicationController

		include ControllerConcern
		include Contabilidade::ObrasHelper

		before_action :authenticate_usuario!
		before_action :autoriza_usuario!, except: [:componentes_da_operacao_de_credito]
		before_action :set_operacao_de_credito, only: [:edit, :update]

		# GET /operacao_de_credito/componentes_da_operacao_de_credito/1/edit
		def edit
		end

		# PATCH/PUT /operacao_de_credito/componentes_da_operacao_de_credito/1
		def update
			if @operacao_de_credito.update( componente_da_operacao_de_credito_params )
				redirect_to obra_operacao_de_credito_path(@operacao_de_credito), notice: 'Componentes da operação de crédito foram atualizados com sucesso.'
			else
				render :edit
			end
		end

		#GET /obra/componentes_da_operacao_de_credito/1/componentes_da_operacao_de_credito
		def componentes_da_operacao_de_credito
			render json: Obra::ComponenteDaOperacaoDeCredito.where(operacao_de_credito_id: params[:id])
		end

		#GET /obra/componentes_da_operacao_de_credito/1/acoes_das_operacoes
		def acoes_das_operacoes
			render json: Obra::ComponenteDaOperacaoDeCredito.find(params[:id]).acoes_do_componente
		end

		private

		def set_operacao_de_credito
			@operacao_de_credito = Obra::OperacaoDeCredito.find( params[:id] )
		end

		# Permite apenas os parâmetros específicos
		def componente_da_operacao_de_credito_params
			params.require(:obra_operacao_de_credito).permit(
				componentes_da_operacao_de_credito_attributes: [:id, :descricao, :_destroy,
					subcomponentes_da_operacao_de_credito_attributes: [:id, :descricao, :_destroy,
						acoes_do_componente_attributes:
							[:id, :componente_da_operacao_de_credito_id, :descricao, :valor_repasse, :valor_contrapartida, :valor_total, :_destroy]
					]
				]
			)
		end
	end
end
