module Obra
	class Obra::ServicosDaObraController < ApplicationController
		include ControllerConcern
		include Contabilidade::ObrasHelper

		before_action :authenticate_usuario!
		before_action :autoriza_usuario!
		before_action :set_obra, only: [:edit, :update]


		# GET /obra/servicos_da_obra/1/edit
		def edit
		end

		# PATCH/PUT /obra/servicos_da_obra/1
		def update
			if servico_da_obra_params
				begin
					if @obra.update( servico_da_obra_params )
						redirect_to rota_obra(@obra), notice: 'Cronograma da Obra foi atualizado(a) com sucesso.'
					else
						render :edit
					end
				rescue ActiveRecord::DeleteRestrictionError => e
					redirect_to edit_obra_servico_da_obra_path(@obra), alert: "Há itens associados a medições que não podem ser excluídos"
				end
			else
				render :edit
			end
		end

		private
		def set_obra
			@obra = Contabilidade::Obra.find( params[:id] )
		end

		# Permite apenas os parâmetros específicos
		def servico_da_obra_params
			begin
				params.require(:contabilidade_obra).permit(:valor_bdi,
					servicos_da_obra_attributes: [:id, :descricao, :codigo, :prazo_de_execucao, :_destroy,
						itens_do_servico_da_obra_attributes: [:id, :servico_da_obra_id, :codigo, :descricao, :unidade_de_medida, :quantidade, :preco_unitario, :_destroy]
					])
			rescue ActionController::ParameterMissing
				nil
			end
		end
	end
end
