module Contabilidade
class ConselhosDeRppsController < ApplicationController
	include ControllerConcern
	before_action :authenticate_usuario!
	before_action :autoriza_usuario!, except: [:extinguir_conselho]
	before_action :set_conselho_de_rpps, only: [:show, :edit, :update, :destroy, :extinguir_conselho]
	before_action :disponibiliza_dependencias, only: [:create, :new, :update, :edit, :index]


	# GET /contabilidade/conselhos_de_rpps
	def index
		@q = contexto_atual.conselhos_de_rpps.order(:id).search(params[:q])
		@conselhos_de_rpps = @q.result(distinct: false).paginate(page: params[:page], per_page: 10)
	end

	# GET /contabilidade/conselhos_de_rpps/1
	def show
	end

	# GET /contabilidade/conselhos_de_rpps/new
	def new
		@conselho_de_rpps = ConselhoDeRpps.new
	end

	# GET /contabilidade/conselhos_de_rpps/1/edit
	def edit
	end

	# POST /contabilidade/conselhos_de_rpps
	def create
		@conselho_de_rpps = ConselhoDeRpps.new(conselho_de_rpps_params)
		@conselho_de_rpps.orcamento = contexto_atual

		if @conselho_de_rpps.save
			redirect_to @conselho_de_rpps, notice: 'Conselho de rpps foi criado(a) com sucesso.'
		else
			render :new
		end
	end

	# PATCH/PUT /contabilidade/conselhos_de_rpps/1
	def update
		if @conselho_de_rpps.update( conselho_de_rpps_params )
			redirect_to @conselho_de_rpps, notice: 'Conselho de rpps foi atualizado(a) com sucesso.'
		else
			render :edit
		end
	end

	# DELETE /contabilidade/conselhos_de_rpps/1
	def destroy
		mensagem = apaga_e_retorna_mensagem(@conselho_de_rpps)
		redirect_to contabilidade_conselhos_de_rpps_url, mensagem
	end

	def extinguir_conselho
		return if bloqueia_usuario_com_base_em 'edit'
		if @conselho_de_rpps.update(conselho_de_rpps_params)
			@conselho_de_rpps.membros_do_conselho_do_rpps.each do |membro|
				membro.update(data_de_saida: @conselho_de_rpps.data_de_extincao)
			end
				redirect_to @conselho_de_rpps, notice: 'Conselho foi extinto com sucesso.'
		else
			redirect_to @conselho_de_rpps, notice: 'Preencha os campos pedidos para extinguir o conselho'
		end
	end

	def disponibiliza_dependencias
		@decretos = Contabilidade::Decreto.where(tipo_de_decreto: :rpps).where(funcao_do_instrumento_legal: :reestruturacao_alteracao)
		@decretos_de_extincao = Contabilidade::Decreto.where(tipo_de_decreto: :rpps).where(funcao_do_instrumento_legal: :extincao)
		@tipos_de_conselho = Contabilidade::ConselhoDeRpps.tipos_de_conselho
	end

	private
	def set_conselho_de_rpps
		@conselho_de_rpps = ConselhoDeRpps.find( params[:id] )
	end

	# Permite apenas os parâmetros específicos
	def conselho_de_rpps_params
		params.require(:contabilidade_conselho_de_rpps).permit(:decreto_id, :orcamento_id, :codigo, :tipo_de_conselho, :data_de_extincao, :decreto_de_extincao_id, :arquivo_id, :descricao_do_conselho)
	end
end
end
