class Loa::TemaDaSubacao < ApplicationRecord
	has_paper_trail

	belongs_to :subacao, class_name: 'Loa::Subacao', required: true
	belongs_to :orcamento_tematico, class_name: 'Loa::OrcamentoTematico', required: true

	validates_numericality_of :percentual, greater_than_or_equal_to: 0, less_than_or_equal_to: 100, allow_nil: true

	def descricao
		self.orcamento_tematico.try(:descricao)
	end

	def tipo
		self.percentual.to_f == 100 ? "EX" : "NEX"
	end

	def valor_total
		total_da_despesa = Loa::OrcamentoDaDespesa.joins(:elemento_de_despesa_por_subacao).where(loa_elementos_de_despesa_por_subacao: {subacao_id: self.subacao_id}).sum(:valor)
		total_da_despesa.to_f * (self.percentual.to_f / 100)
	end
end
