module Contabilidade
class MembrosDoConselhoDoRppsController < ApplicationController
	include ControllerConcern
	before_action :authenticate_usuario!
	before_action :autoriza_usuario!, except: [:new, :edit, :create, :update, :destroy, :extinguir_membro]
	before_action :set_membro_do_conselho_do_rpps, only: [:edit, :update, :destroy, :extinguir_membro]
	before_action :set_conselho_do_rpps, only: [:new, :create]
	before_action :disponibiliza_dependencias, only: [:new, :edit]

	# GET /contabilidade/membro_do_conselho_do_rpps/new
	def new
		return if bloqueia_usuario_com_base_em 'create', 'contabilidade/conselhos_de_rpps'
		@membro_do_conselho_do_rpps = @conselho_de_rpps.membros_do_conselho_do_rpps.new
	end

	# GET /contabilidade/membro_do_conselho_do_rpps/1/edit
	def edit
		return if bloqueia_usuario_com_base_em 'create', 'contabilidade/conselhos_de_rpps'
		redirect_to @membro_do_conselho_do_rpps.conselho_de_rpps, alert: 'Não é possivel editar. Membro do conselho enviado ao SIM' and return if @membro_do_conselho_do_rpps.arquivo_id.present?
	end

	# POST /contabilidade/membro_do_conselho_do_rpps
	def create
		return if bloqueia_usuario_com_base_em 'create', 'contabilidade/conselhos_de_rpps'

		@membro_do_conselho_do_rpps = @conselho_de_rpps.membros_do_conselho_do_rpps.new(membro_do_conselho_do_rpps_params)

		if @membro_do_conselho_do_rpps.save
			redirect_to @membro_do_conselho_do_rpps.conselho_de_rpps, notice: 'Membro do conselho do rpps foi criado(a) com sucesso.'
		else
			disponibiliza_dependencias
			render :new
		end
	end

	# PATCH/PUT /contabilidade/membro_do_conselho_do_rpps/1
	def update
		return if bloqueia_usuario_com_base_em 'create', 'contabilidade/conselhos_de_rpps'

		if @membro_do_conselho_do_rpps.update( membro_do_conselho_do_rpps_params )
			redirect_to @membro_do_conselho_do_rpps.conselho_de_rpps, notice: 'Membro do conselho do rpps foi atualizado(a) com sucesso.'
		else
			disponibiliza_dependencias
			render :edit
		end
	end

	# DELETE /contabilidade/membro_do_conselho_do_rpps/1
	def destroy
		return if bloqueia_usuario_com_base_em 'create', 'contabilidade/conselhos_de_rpps'

		mensagem = apaga_e_retorna_mensagem(@membro_do_conselho_do_rpps)
		redirect_to @membro_do_conselho_do_rpps.conselho_de_rpps, notice: 'Membro do conselho foi excluido(a) com sucesso.'
	end

	def extinguir_membro
		return if bloqueia_usuario_com_base_em 'create', 'contabilidade/conselhos_de_rpps'
		if params[:data_de_saida].present?
			@membro_do_conselho_do_rpps.update(data_de_saida: params[:data_de_saida].to_date )
			redirect_to @membro_do_conselho_do_rpps.conselho_de_rpps, notice: 'Membro do conselho foi extinto(a) com sucesso.'
		end
	end

	private
	def set_membro_do_conselho_do_rpps
		@membro_do_conselho_do_rpps = MembroDoConselhoDoRpps.find( params[:id] )
	end

	def disponibiliza_dependencias
		@pessoas = Base::Pessoa.includes(:tipo_de_pessoa).fisicas.all
		@representatividades_dos_conselhos = Contabilidade::MembroDoConselhoDoRpps.representatividades_dos_conselhos
	end

	def set_conselho_do_rpps
		@conselho_de_rpps = Contabilidade::ConselhoDeRpps.find( params[:conselho_de_rpps] )
	end

	# Permite apenas os parâmetros específicos
	def membro_do_conselho_do_rpps_params
		params.require(:contabilidade_membro_do_conselho_do_rpps).permit(:pessoa_id, :conselho_de_rpps_id, :representatividade_do_conselho, :data_de_admissao, :data_de_saida)

	end
end
end
