class Obra::AcompanhamentosDasObrasController < ApplicationController

	include ControllerConcern
	include ObraControllersConcern

	before_action :authenticate_usuario!
	before_action :autoriza_usuario!
	before_action :set_obra, only: [:show]
	before_action :disponibiliza_dependencias, only: [:index, :show]

	def index
		orcamento = unless query_params["orcamento_id_eq"].blank?
			Orcamento.find(query_params["orcamento_id_eq"])
		else
			contexto_atual
		end

		obras = current_usuario.administrador? ? orcamento.obras : current_usuario.obras.do_exercicio(orcamento.exercicio)

		@q = obras.where(tipo_de_obra: Contabilidade::Obra.tipos_de_obra[:obra]).order(id: :desc).ransack(query_params)
		@obras = @q.result(distinct: false).paginate(page: params[:page], per_page: 10)
	end

	def show
		# grafico de pizza % medido da obra
		porcentagem_total_das_medicoes = @obra.porcentagem_total_das_medicoes.to_f.round(2)
		nao_executado = (100 - porcentagem_total_das_medicoes).to_f.round(2)
		@total_medido_da_obra = {"Não executado: #{nao_executado}%" => nao_executado, "Medido: #{porcentagem_total_das_medicoes}%" => porcentagem_total_das_medicoes}

		# grafico de barra dos valores empenhado, liquidado e pago da obra
		#@valores_da_obra = {"Valor Pago: #{@obra.valor_total_pago.to_f.real_contabil}" => @obra.valor_total_pago.to_f,
		#	"Valor Liquidado: #{@obra.valor_total_liquidado.to_f.real_contabil}" => @obra.valor_total_liquidado.to_f,
		#		"Valor Empenhado: #{@obra.valor_total_empenhado.to_f.real_contabil}" => @obra.valor_total_empenhado.to_f,
		#			"Valor da Obra: #{@obra.valor.to_f.real_contabil}" => @obra.valor.to_f}
	end


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

	def disponibiliza_dependencias
		@tipos_de_status_da_obra = Contabilidade::SituacaoDaObra.tipos_de_status_da_obra
		@fontes_de_origem = Contabilidade::Obra.fontes_de_origem
		@fontes_de_contrapartida = Contabilidade::Obra.fontes_de_contrapartida
		@unidades_orcamentarias = contexto_atual.unidades_orcamentarias
		@pessoas = Base::Pessoa.includes(:tipo_de_pessoa).fornecedores
		@engenheiros_da_obra = Base::TipoDePessoa.find_by(codigo: '1').pessoas.order(:nome)
	end
end
