module Controladoria
class ResponsaveisDoCentroDeCustosController < ApplicationController
	include ControllerConcern
	before_action :authenticate_usuario!
	before_action :autoriza_usuario!
	before_action :set_responsavel_do_centro_de_custo, only: [:show, :edit, :update, :destroy]
	before_action :disponibiliza_dependencias, only: [:edit, :new, :update, :create]

	# GET /controladoria/responsaveis_do_centro_de_custos/new
	def new
		@responsavel_do_centro_de_custo = ResponsavelDoCentroDeCusto.new(centro_de_custo_id: params[:centro_de_custo_id])
	end

	# GET /controladoria/responsaveis_do_centro_de_custos/1/edit
	def edit
	end

	# POST /controladoria/responsaveis_do_centro_de_custos
	def create
		@responsavel_do_centro_de_custo = ResponsavelDoCentroDeCusto.new(responsavel_do_centro_de_custo_params)

		if @responsavel_do_centro_de_custo.save
			redirect_to controladoria_centro_de_custo_path(@responsavel_do_centro_de_custo.centro_de_custo_id) + "?tab=responsaveis_do_centro_de_custos", notice: 'Responsável do Centro de Custo foi criado(a) com sucesso.'
		else
			render :new
		end
	end

	# PATCH/PUT /controladoria/responsaveis_do_centro_de_custos/1
	def update
		if @responsavel_do_centro_de_custo.update( responsavel_do_centro_de_custo_params )
			redirect_to controladoria_centro_de_custo_path(@responsavel_do_centro_de_custo.centro_de_custo_id) + "?tab=responsaveis_do_centro_de_custos", notice: 'Responsável do Centro de Custo foi atualizado(a) com sucesso.'
		else
			render :edit
		end
	end

	# DELETE /controladoria/responsaveis_do_centro_de_custos/1
	def destroy
		centro_de_custo = @responsavel_do_centro_de_custo.centro_de_custo_id
		@responsavel_do_centro_de_custo.delete
		redirect_to controladoria_centro_de_custo_path(centro_de_custo) + "?tab=responsaveis_do_centro_de_custos", notice: 'Responsável do Centro de Custo foi deletado(a) com sucesso.' 
	end

	private
	def set_responsavel_do_centro_de_custo
		@responsavel_do_centro_de_custo = ResponsavelDoCentroDeCusto.find( params[:id] )
	end

	def disponibiliza_dependencias
		unidades_orcamentarias_contexto_atual = contexto_atual.unidades_orcamentarias
		@agentes_publicos_municipais = Base::AgentePublicoMunicipal.includes(:pessoa).where(unidade_orcamentaria_id: unidades_orcamentarias_contexto_atual.pluck(:id)).all.distinct
	end

	# Permite apenas os parâmetros específicos
	def responsavel_do_centro_de_custo_params
		params.require(:controladoria_responsavel_do_centro_de_custo).permit(:centro_de_custo_id, :agente_publico_municipal_id, :numero_da_portaria, :data_inicial, :data_final, :responsavel_gestora)
	end
end
end
