class Base::TecnicosController < ApplicationController
	include ControllerConcern

	before_action :authenticate_usuario!
	before_action :autoriza_usuario!
	before_action :set_base_tecnico, only: [:show, :edit, :update, :destroy]
	before_action :disponibiliza_dependencias, only: [:new, :edit]

	# GET /base/tecnicos
	def index
		@q = Base::Tecnico.where( modulo_id: contexto_atual.id, modulo_type: contexto_atual.class.name).order(:ordem_de_impressao, :nome).search(params[:q])
		@base_tecnicos = @q.result.paginate(page: params[:page], per_page: 10)
	end

	# GET /base/tecnicos/1
	def show
	end

	# GET /base/tecnicos/new
	def new
		@base_tecnico = Base::Tecnico.new
	end

	# GET /base/tecnicos/1/edit
	def edit
	end

	# POST /base/tecnicos
	def create
		@base_tecnico = Base::Tecnico.new(base_tecnico_params)
		@base_tecnico.modulo_id = contexto_atual.id
		@base_tecnico.modulo_type = contexto_atual.class.name

		if @base_tecnico.save
			redirect_to base_tecnicos_url, notice: 'Técnico foi criado com sucesso.'
		else
			disponibiliza_dependencias
			render :new
		end
	end

	# PATCH/PUT /base/tecnicos/1
	def update
		if @base_tecnico.update(base_tecnico_params)
			redirect_to base_tecnicos_url, notice: 'Técnico foi atualizado com sucesso.'
		else
			disponibiliza_dependencias
			render :edit
		end
	end

	# DELETE /base/tecnicos/1
	def destroy
		mensagem = apaga_e_retorna_mensagem(@base_tecnico)
		redirect_to base_tecnicos_url, mensagem
	end

	private
	# Use callbacks to share common setup or constraints between actions.
	def set_base_tecnico
		@base_tecnico = Base::Tecnico.find(params[:id])
	end

	# Only allow a trusted parameter "white list" through.
	def base_tecnico_params
		params.require(:base_tecnico).permit(:modulo_id, :nome, :cargo, :ordem_de_impressao, :orgao_id, :consultoria, :de_um_orgao)
	end

	def disponibiliza_dependencias
		@orgaos = contexto_atual.orgaos.order(:codigo)
	end
end
