module Licitacao
class FiscaisDoContratoController < ApplicationController
	include ControllerConcern
	before_action :authenticate_usuario!
	before_action :autoriza_usuario!, except: [:new, :edit, :create, :update, :destroy, :retorna_cargo]
	before_action :set_fiscal_do_contrato, only: [:edit, :update, :destroy]
	before_action :disponibiliza_dependencias, only: [:edit, :new, :create, :update]
	before_action :set_contrato, only: [:new, :edit, :create, :update]

	# GET /licitacao/fiscais_do_contrato/new
	def new
		return if bloqueia_usuario_com_base_em 'create', 'licitacao/contratos'
		@fiscal_do_contrato = Licitacao::FiscalDoContrato.new
	end

	# GET /licitacao/fiscais_do_contrato/1/edit
	def edit
	end

	# POST /licitacao/fiscais_do_contrato
	def create
		@fiscal_do_contrato = Licitacao::FiscalDoContrato.new(fiscal_do_contrato_params)

		if @fiscal_do_contrato.save
			redirect_to licitacao_contrato_path(@fiscal_do_contrato.contrato) + "?tab=fiscais_do_contrato", notice: 'Fiscal do contrato foi criado(a) com sucesso.'
		else
			render :new
		end
	end

	# PATCH/PUT /licitacao/fiscais_do_contrato/1
	def update
		if @fiscal_do_contrato.update( fiscal_do_contrato_params )
			redirect_to licitacao_contrato_path(@fiscal_do_contrato.contrato) + "?tab=fiscais_do_contrato", notice: 'Fiscal do contrato foi atualizado(a) com sucesso.'
		else
			render :edit
		end
	end

	# DELETE /licitacao/fiscais_do_contrato/1
	def destroy
		mensagem = apaga_e_retorna_mensagem(@fiscal_do_contrato)
		redirect_to licitacao_contrato_path(@fiscal_do_contrato.contrato) + "?tab=fiscais_do_contrato", mensagem
	end

	# GET licitacao/fiscais_do_contrato/retorna_cargo?agente_id=:agente_id
	def retorna_cargo
		@agente = Base::AgentePublicoMunicipal.find_by(id: params[:agente_id])
		render json: {
			'cargo': @agente.tipo_de_cargo? ? @agente.localizar(:tipo_de_cargo) : ' ',
		}
	end

	private
	def set_fiscal_do_contrato
		@fiscal_do_contrato = Licitacao::FiscalDoContrato.find( params[:id] )
	end

	def set_contrato
		@contrato = Licitacao::Contrato.find(params[:contrato_id])
	end

	def disponibiliza_dependencias
		@agentes_publicos = Base::AgentePublicoMunicipal.all
	end

	# Permite apenas os parâmetros específicos
	def fiscal_do_contrato_params
		params.require(:licitacao_fiscal_do_contrato).permit(:cargo, :numero_da_portaria, :vigencia_inicial_da_portaria, :contrato_id, :agente_publico_id, :ativo, :matricula)
	end
end
end
