module Loa
class AssessoresDeContabilidadeResponsaveisController < ApplicationController
	include ControllerConcern
	before_action :set_unidade_orcamentaria, only: [:new, :create, :edit, :update, :destroy]
	before_action :authenticate_usuario!
	before_action :autoriza_usuario!
	before_action :set_assessor_de_contabilidade_responsavel, only: [:show, :edit, :update, :destroy]
	before_action :disponibiliza_despendencias

	# GET /loa/assessores_de_contabilidade_responsaveis/new
	def new
		@assessor_de_contabilidade_responsavel = AssessorDeContabilidadeResponsavel.new
		#(orgao_id: @orgao.id)
	end

	# GET /loa/assessores_de_contabilidade_responsaveis/1/edit
	def edit
		
	end

	# POST /loa/assessores_de_contabilidade_responsaveis
	def create
		@assessor_de_contabilidade_responsavel = AssessorDeContabilidadeResponsavel.new(assessor_de_contabilidade_responsavel_params)
		@assessor_de_contabilidade_responsavel.update(orgao_id: @unidade_orcamentaria.orgao.id)

		if @assessor_de_contabilidade_responsavel.save
			redirect_to @unidade_orcamentaria, notice: 'Assessor de contabilidade responsavel foi criado(a) com sucesso.'
		else
			flash.now[:alert] = 'Erro ao criar o assessor de contabilidade responsável.'
			render :new 
		end
	end

	# PATCH/PUT /loa/assessores_de_contabilidade_responsaveis/1
	def update
		if @assessor_de_contabilidade_responsavel.update( assessor_de_contabilidade_responsavel_params )

			redirect_to @unidade_orcamentaria, notice: 'Assessor de contabilidade responsavel foi atualizado(a) com sucesso.'
		else
			flash.now[:alert] = 'Erro ao editar o assessor de contabilidade responsável.'
			render :edit
		end
	end

	# DELETE /loa/assessores_de_contabilidade_responsaveis/1
	def destroy
		@assessor = Loa::AssessorDeContabilidadeResponsavel.find(params[:id])
		if @assessor.destroy
			# Remove a referência na tabela loa_unidades_orcamentarias
			Loa::UnidadeOrcamentaria.where(assessor_contabilidade_responsavel_id: @assessor.id).update_all(assessor_contabilidade_responsavel_id: nil)
			flash[:success] = "Assessor excluído com sucesso."
			redirect_to @unidade_orcamentaria
		else
			flash[:error] = "Erro ao excluir o assessor."
			redirect_to @unidade_orcamentaria
		end
	end
	
	private
	def set_unidade_orcamentaria
    if params[:unidade_orcamentaria_id].present?
			@unidade_orcamentaria = Loa::UnidadeOrcamentaria.find(params[:unidade_orcamentaria_id])
		else
			@unidade_orcamentaria = params["loa_assessor_de_contabilidade_responsavel"][:unidade_orcamentaria_id]
		end	
  end

  def set_assessor_de_contabilidade_responsavel
    @assessor_de_contabilidade_responsavel = AssessorDeContabilidadeResponsavel.find(params[:id])
  end

  def disponibiliza_despendencias
    @pessoas = Base::Pessoa.all
  end

  def assessor_de_contabilidade_responsavel_params
    params.require(:loa_assessor_de_contabilidade_responsavel).permit(:pessoa_id, :data_de_inicio, :data_de_fim, :unidade_orcamentaria_id, :crc)
  end
end
end
