module Base
	class NaturezaDaAcao < ApplicationRecord
		has_paper_trail

		has_many :acoes, class_name: 'Loa::Acao', foreign_key: 'natureza_da_acao_id'
		belongs_to :modulo, polymorphic: true, required: true

		validates_presence_of :codigo, :descricao, :modulo_id, :modulo_type
		validates_uniqueness_of :codigo, :descricao, scope: [:modulo_id, :modulo_type]

		validates :modulo_type, immutable: true
		validates :modulo_id, immutable: true

		ransacker :codigo_completo do
			Arel.sql("base_naturezas_das_acoes.codigo::text ||'.'|| LPAD(loa_acoes.codigo::text, 3, '0')")
		end

		def codigo_e_descricao
			"#{codigo} - #{descricao}"
		end

		def reserva_de_contingencia?
			codigo == '9'
		end
	end
end
