module Obra
	class Obra::DocumentosDaMedicaoDaObraController < ApplicationController
		include ControllerConcern
		include ObraControllersConcern

		before_action :authenticate_usuario!
		before_action :autoriza_usuario!
		before_action :set_medicao_da_obra, only: [:new, :create]
		before_action :set_documento_da_medicao_da_obra, only: [:show, :edit, :update, :destroy]

		# GET /obra/medicoes_da_obra/1/documentos_da_medicao_da_obra/new
		def new
			@documento_da_medicao_da_obra = @medicao_da_obra.documentos_da_medicao_da_obra.new
		end

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

		# GET /obra/documentos_da_medicao_da_obra/1
		def show
		end

		# POST /obra/medicoes_da_obra/1/documentos_da_medicao_da_obra
		def create
			@documento_da_medicao_da_obra = @medicao_da_obra.documentos_da_medicao_da_obra.new(documento_da_medicao_da_obra_params)
			@documento_da_medicao_da_obra.usuario = current_usuario
			if @documento_da_medicao_da_obra.save
				redirect_to contabilidade_medicao_da_obra_path(@documento_da_medicao_da_obra.medicao_da_obra), notice: 'Documento do medição da obra foi criado com sucesso.'
			else
				render :new
			end
		end

		# PATCH/PUT /obra/documentos_da_medicao_da_obra/1
		def update
			if @documento_da_medicao_da_obra.update( documento_da_medicao_da_obra_params )
				redirect_to contabilidade_medicao_da_obra_path(@documento_da_medicao_da_obra.medicao_da_obra), notice: 'Documento do medição da obra foi atualizado com sucesso.'
			else
				render :edit
			end
		end

		# DELETE /obra/documentos_da_medicao_da_obra/1
		def destroy
			mensagem = apaga_e_retorna_mensagem(@documento_da_medicao_da_obra)
			redirect_to contabilidade_medicao_da_obra_path(@documento_da_medicao_da_obra.medicao_da_obra), mensagem
		end

		private
		def set_documento_da_medicao_da_obra
			@documento_da_medicao_da_obra = Obra::DocumentoDaMedicaoDaObra.find( params[:id] )
		end

		def set_medicao_da_obra
			if params[:action] == "update" || params[:action] == "edit"
				@medicao_da_obra = Obra::DocumentoDaMedicaoDaObra.find(params[:id]).medicao_da_obra
			else
				@medicao_da_obra = Contabilidade::MedicaoDaObra.find(params[:medicao_da_obra_id])
			end
		end

		# Permite apenas os parâmetros específicos
		def documento_da_medicao_da_obra_params
			params.require(:obra_documento_da_medicao_da_obra).permit(:medicao_da_obra_id, :data_do_documento, :texto, :usuario_id, :documento, :numero)
		end
	end
end
