module Base
	class NaturezaDaAcao < ApplicationRecord
		has_paper_trail

		has_many :acoes, class_name: 'Loa::Acao', dependent: :restrict_with_exception
		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
	end
end
