module Contabilidade
class ParcelamentosDoRppsController < ApplicationController
	include ControllerConcern
	before_action :authenticate_usuario!
	before_action :autoriza_usuario!, except: [:dados_do_parcelamento_do_rpps]
	before_action :disponibiliza_dependencias, only: [:show, :edit, :update, :destroy, :dados_do_parcelamento_do_rpps]
	before_action :set_parcelamento_do_rpps, only: [:show, :edit, :update, :destroy, :dados_do_parcelamento_do_rpps]

	# GET /contabilidade/parcelamentos_do_rpps
	def index
		@decretos = Contabilidade::Decreto.rpps.where(numero_revogado: nil)
		@q = ParcelamentoDoRpps.order(:id).search(params[:q])
		@parcelamentos_do_rpps = @q.result(distinct: false).paginate(page: params[:page], per_page: 10)
		@parcelamentos_do_rpps.joins(:decreto).order(:data_da_legislacao)
	end

	# GET /contabilidade/parcelamentos_do_rpps/1
	def show
	end

	# GET /contabilidade/parcelamentos_do_rpps/new
	def new
		disponibiliza_dependencias
		@parcelamento_do_rpps = ParcelamentoDoRpps.new
	end

	# GET /contabilidade/parcelamentos_do_rpps/1/edit
	def edit
		disponibiliza_dependencias
	end

	# POST /contabilidade/parcelamentos_do_rpps
	def create
		disponibiliza_dependencias
		@parcelamento_do_rpps = ParcelamentoDoRpps.new(parcelamento_do_rpps_params)
		if @parcelamento_do_rpps.save
			redirect_to @parcelamento_do_rpps, notice: 'Parcelamento do rpps foi criado(a) com sucesso.'
		else
			render :new
		end
	end

	# PATCH/PUT /contabilidade/parcelamentos_do_rpps/1
	def update
		disponibiliza_dependencias
		if @parcelamento_do_rpps.update( parcelamento_do_rpps_params )
			redirect_to @parcelamento_do_rpps, notice: 'Parcelamento do rpps foi atualizado(a) com sucesso.'
		else
			render :edit
		end
	end

	# DELETE /contabilidade/parcelamentos_do_rpps/1
	def destroy
		mensagem = apaga_e_retorna_mensagem(@parcelamento_do_rpps)
		redirect_to contabilidade_parcelamentos_do_rpps_url, mensagem
	end


	# GET contabilidade/parcelamentos_do_rpps/:id/dados_do_parcelamento_do_rpps
	def dados_do_parcelamento_do_rpps
		params[:parcelamento_do_rpps_id]
		render json: {
			'quantidade_de_parcelas': @parcelamento_do_rpps.quantidade_de_parcelas,
			'valor_total_do_parcelamento': @parcelamento_do_rpps.valor_total_do_parcelamento,
			'valor_da_parcela_inicial': @parcelamento_do_rpps.valor_da_parcela_inicial,
			'data_do_vencimento_da_primeira_parcela': @parcelamento_do_rpps.data_do_vencimento_da_primeira_parcela.to_s,
			'competencias_parceladas': @parcelamento_do_rpps.competencias_parceladas,
			'valor_a_parcelar': @parcelamento_do_rpps.saldo_do_parcelamento,
			'parcelas_pagas': @parcelamento_do_rpps.parcelas_pagas,
			'valor_da_parcela': @parcelamento_do_rpps.valor_da_parcela_inicial.to_f,
			'parcela_atual': @parcelamento_do_rpps.parcela_atual.to_f
		}
	end

	private
	def set_parcelamento_do_rpps
		if params[:parcelamento_do_rpps_id]
			@parcelamento_do_rpps = ParcelamentoDoRpps.find( params[:parcelamento_do_rpps_id] )
		else
			@parcelamento_do_rpps = ParcelamentoDoRpps.find( params[:id] )
		end
	end

	def disponibiliza_dependencias
		@decretos_de_lei_altorizativa = Contabilidade::Decreto.rpps.where(funcao_do_instrumento_legal: :reestruturacao_alteracao).where(numero_revogado: nil).joins("LEFT OUTER JOIN contabilidade_parcelamentos_do_rpps ON(contabilidade_parcelamentos_do_rpps.decreto_de_acordo_id = contabilidade_decretos.id)").where("contabilidade_parcelamentos_do_rpps.decreto_de_acordo_id is NULL")
		@decretos_de_acordo = Contabilidade::Decreto.rpps.where(funcao_do_instrumento_legal: :reestruturacao_alteracao).where(numero_revogado: nil).joins("LEFT OUTER JOIN contabilidade_parcelamentos_do_rpps ON( contabilidade_parcelamentos_do_rpps.decreto_de_lei_id = contabilidade_decretos.id OR contabilidade_parcelamentos_do_rpps.decreto_de_acordo_id = contabilidade_decretos.id)").where("contabilidade_parcelamentos_do_rpps.decreto_de_acordo_id is NULL")
	end

	# Permite apenas os parâmetros específicos
	def parcelamento_do_rpps_params
		params.require(:contabilidade_parcelamento_do_rpps).permit(:orcamento_id, :decreto_de_lei_id, :decreto_de_acordo_id, :data_da_publicacao_da_lei_autorizativa, :termor_do_acordo_do_parcelamento, :valor_total_do_parcelamento, :data_do_termo_de_acordo_parcelado, :competencias_parceladas, :quantidade_de_parcelas, :data_do_vencimento_da_primeira_parcela, :valor_da_parcela_inicial, :arquivo_id)

	end
end
end
