class Contabilidade::EngenheirosDaObraController < ApplicationController
	include ControllerConcern
	include Contabilidade::ObrasHelper

	before_action -> { verifica_modulo_na_sessao(["contabilidade", "administrativo", "obra"]) }
	before_action :authenticate_usuario!
	before_action :autoriza_usuario!
	before_action :set_engenheiro_da_obra, only: [:show, :edit, :update, :destroy]
	before_action :set_obra, only: [:new, :edit, :update, :create]
	before_action :disponibiliza_dependencias, only: [:new, :edit, :update]

	def index
		@q = Contabilidade::EngenheiroDaObra.order(:id).search(params[:q])
		@engenheiros_da_obra = @q.result(distinct: false).paginate(page: params[:page], per_page: 10)
	end

	def show
	end

	def edit
	end

	def new
		@engenheiro_da_obra = @obra.engenheiros_da_obra.new
	end

	def create
		@engenheiro_da_obra = @obra.engenheiros_da_obra.new( engenheiro_da_obra_params )
		if @engenheiro_da_obra.save
			redirect_to rota_obra(@engenheiro_da_obra.obra), notice: 'Responsável adicionado com sucesso.'
		else
			disponibiliza_dependencias
			render :new
		end
	end

	def destroy
		mensagem = apaga_e_retorna_mensagem(@engenheiro_da_obra)
		redirect_to rota_obra(@engenheiro_da_obra.obra), mensagem
	end

	def update
		if @engenheiro_da_obra.update(engenheiro_da_obra_params)
			redirect_to rota_obra(@engenheiro_da_obra.obra), notice: "Responsável alterado com sucesso."
		else
			flash.now[:alert] = 'Não foi possível editar o Responsável, Verifique os campos'
			disponibiliza_dependencias
			render :edit
		end
	end

	private
	def set_engenheiro_da_obra
		@engenheiro_da_obra = Contabilidade::EngenheiroDaObra.find( params[:id] )
	end

	def set_obra
		if params[:obra_id].present?
			@obra = Contabilidade::Obra.find(params[:obra_id])
		else
			@obra = @engenheiro_da_obra.obra
		end
	end

	def disponibiliza_dependencias
		@pessoas = Base::TipoDePessoa.find_by(codigo: '1').pessoas.order(:nome)
	end

	def engenheiro_da_obra_params
		params.require(:contabilidade_engenheiro_da_obra).permit( :obra_id, :pessoa_id, :data_de_inicio, :numero_do_crea, :tipo, :formacao, :numero_da_portaria, :cargo )
	end
end