module Contabilidade
class MembrosDosComitesDeInvestimentoController < ApplicationController
	include ControllerConcern
  include ContabilidadeControllerConcern

	before_action :authenticate_usuario!
	before_action :autoriza_usuario!, except: [:new, :edit, :create, :update, :destroy, :extinguir_membro]
	before_action :set_membro_do_comite_de_investimento, only: [:edit, :update, :destroy,:extinguir_membro]
	before_action :set_comite_de_investimento, only: [:new, :create]
	before_action :disponibiliza_dependencias, only: [:new, :edit]

	# GET /contabilidade/membros_dos_comites_de_investimento/new
	def new
		return if bloqueia_usuario_com_base_em 'create', 'contabilidade/comites_de_investimento'
		@membro_do_comite_de_investimento = @comite_de_investimento.membros_dos_comites_de_investimento.new
	end

	# GET /contabilidade/membros_dos_comites_de_investimento/1/edit
	def edit
		return if bloqueia_usuario_com_base_em 'edit', 'contabilidade/comites_de_investimento'

		redirect_to @membro_do_comite_de_investimento.comite_de_investimento, alert: 'Não é possivel editar. Membro do comitê enviado ao SIM' and return if @membro_do_comite_de_investimento.arquivo_id.present?
	end

	# POST /contabilidade/membros_dos_comites_de_investimento
	def create
		@membro_do_comite_de_investimento = @comite_de_investimento.membros_dos_comites_de_investimento.new(membro_do_comite_de_investimento_params)

		if @membro_do_comite_de_investimento.save
			redirect_to @membro_do_comite_de_investimento.comite_de_investimento, notice: 'Membro do comitê foi criado(a) com sucesso.'
		else
			disponibiliza_dependencias
			render :new
		end
	end

	# PATCH/PUT /contabilidade/membros_dos_comites_de_investimento/1
	def update
		if @membro_do_comite_de_investimento.update( membro_do_comite_de_investimento_params )
			redirect_to @membro_do_comite_de_investimento.comite_de_investimento, notice: 'Membro do comitê foi atualizado(a) com sucesso.'
		else
			disponibiliza_dependencias
			render :edit
		end
	end

	# DELETE /contabilidade/membros_dos_comites_de_investimento/1
	def destroy
		return if bloqueia_usuario_com_base_em 'edit', 'contabilidade/comites_de_investimento'

		mensagem = apaga_e_retorna_mensagem(@membro_do_comite_de_investimento)
		redirect_to @membro_do_comite_de_investimento.comite_de_investimento, mensagem
	end

	def extinguir_membro
		return if bloqueia_usuario_com_base_em 'create', 'contabilidade/comites_de_investimento'

		@membro_do_comite_de_investimento.update(data_de_saida: Date.current)
		redirect_to @membro_do_comite_de_investimento.comite_de_investimento, notice: 'Membro do comitê foi extinto(a) com sucesso.'
	end

	private
	def set_membro_do_comite_de_investimento
		@membro_do_comite_de_investimento = Contabilidade::MembroDoComiteDeInvestimento.find( params[:id] )
	end

	def disponibiliza_dependencias
		@pessoas = Base::Pessoa.fisicas.all
		@decretos = Contabilidade::Decreto.where(tipo_de_decreto: :rpps).where(funcao_do_instrumento_legal: :reestruturacao_alteracao)
	end

	def set_comite_de_investimento
		@comite_de_investimento = Contabilidade::ComiteDeInvestimento.find( params[:comite_de_investimento] )
	end

	# Permite apenas os parâmetros específicos
	def membro_do_comite_de_investimento_params
		params.require(:contabilidade_membro_do_comite_de_investimento).permit(:pessoa_id, :comite_de_investimento_id, :data_de_admissao, :data_de_saida, :decreto_id)
	end
end
end
