module Loa
	class OrdenadoresDeDespesaController < ApplicationController
		include ControllerConcern
		before_action :authenticate_usuario!
		before_action :autoriza_usuario!
		before_action :bloquear_orcamento, only: [:destroy]
		before_action :set_ordenador_de_despesa, only: [:show, :edit, :update, :destroy]

		# GET /loa/ordenadores_de_despesa/1
		def show
		end

		# GET /loa/ordenadores_de_despesa/new
		def new
			disponibiliza_dependencias
			@ordenador_de_despesa = OrdenadorDeDespesa.new
		end

		# GET /loa/ordenadores_de_despesa/1/edit
		def edit
			disponibiliza_dependencias
		end

		# POST /loa/ordenadores_de_despesa
		def create
			disponibiliza_dependencias
			@ordenador_de_despesa = OrdenadorDeDespesa.new(ordenador_de_despesa_params)
			@ordenador_de_despesa.unidade_orcamentaria_id = params[:id]

			if @ordenador_de_despesa.save
				redirect_to @ordenador_de_despesa, notice: 'Ordenador de despesa foi criado(a) com sucesso.'
			else
				render :new
			end
		end

		# PATCH/PUT /loa/ordenadores_de_despesa/1
		def update
			disponibiliza_dependencias
			if @ordenador_de_despesa.update( ordenador_de_despesa_params )
				redirect_to @ordenador_de_despesa.unidade_orcamentaria, notice: 'Ordenador de despesa foi atualizado(a) com sucesso.'
			else
				render :edit
			end
		end

		# DELETE /loa/ordenadores_de_despesa/1
		def destroy
			mensagem = apaga_e_retorna_mensagem(@ordenador_de_despesa)
			redirect_to @ordenador_de_despesa.unidade_orcamentaria, mensagem
		end

		private
		def set_ordenador_de_despesa
			@ordenador_de_despesa = OrdenadorDeDespesa.find( params[:id] )
		end

		def ordenador_de_despesa_params
			params.require(:loa_ordenador_de_despesa).permit(:unidade_orcamentaria_id,:agente_publico_id, :data_fim_de_gestao, :data_inicio_da_gestao, 
			:numero_da_portaria, :data_da_portaria, :ingresso_sistema_publico_municipal, :tipo_de_cargo, :tipo_relacao_servico_publico)
		end

		def disponibiliza_dependencias
			unidades_orcamentarias = Loa::UnidadeOrcamentaria.all
			@agente_publico = Base::AgentePublicoMunicipal.where.not(pessoa_id: nil).distinct(:pessoa_id).includes(:pessoa).all
			@ingresso_nos_sistemas_publicos_municipais = Loa::OrdenadorDeDespesa.ingresso_nos_sistemas_publicos_municipais
			@tipos_de_cargos = Loa::OrdenadorDeDespesa.tipos_de_cargos
			@tipos_de_relacoes_com_servico_publico = Loa::OrdenadorDeDespesa.tipos_de_relacoes_com_servico_publico
		end
	end
end
