module Licitacao
	class MembrosDaComissaoController < ApplicationController
		include ControllerConcern
		include LicitacaoControllersConcern

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

		# GET /licitacao/membros_da_comissao/new
		def new
			@membro_da_comissao = @comissao.membros_da_comissao.new
		end

		# GET /licitacao/membros_da_comissao/1/edit
		def edit
			redirect_to @membro_da_comissao.comissao, alert: 'Não é possivel editar. Membro da comissão extinto' and return if @membro_da_comissao.data_de_saida.present?
		end

		# POST /licitacao/membros_da_comissao
		def create
			@membro_da_comissao = @comissao.membros_da_comissao.new(membro_da_comissao_params)

			if @membro_da_comissao.save
				redirect_to @membro_da_comissao.comissao, notice: 'Membro da comissão foi criado(a) com sucesso.'
			else
				disponibiliza_dependencias
				render :new
			end
		end

		# PATCH/PUT /licitacao/membros_da_comissao/1
		def update
			if @membro_da_comissao.update( membro_da_comissao_params )
				redirect_to @membro_da_comissao.comissao, notice: 'Membro da comissão foi atualizado(a) com sucesso.'
			else
				disponibiliza_dependencias
				render :edit
			end
		end

		# DELETE /licitacao/membros_da_comissao/1
		def destroy
			mensagem = apaga_e_retorna_mensagem(@membro_da_comissao)
			redirect_to @membro_da_comissao.comissao, mensagem
		end

		def extinguir_membro
			@membro_da_comissao.update(data_de_saida: Date.current)
			redirect_to @membro_da_comissao.comissao, notice: 'Membro da comissão foi extinto(a) com sucesso.'
		end

		private
		def set_membro_da_comissao
			@membro_da_comissao = MembroDaComissao.find(params[:id])
		end

		def disponibiliza_dependencias
			@agentes_publicos = Base::AgentePublicoMunicipal.all
			@tipos = Licitacao::MembroDaComissao.tipos_i18n(@comissao || @membro_da_comissao.comissao)
		end

		def set_comissao
			@comissao = Licitacao::Comissao.find( params[:comissao_id] )
		end

		# Permite apenas os parâmetros específicos
		def membro_da_comissao_params
			params.require(:licitacao_membro_da_comissao).permit(:comissao_id, :agente_publico_municipal_id, :tipo, :data_de_admissao, :data_de_saida)
		end
	end
end
