class Ppa::Orgao < ApplicationRecord
	include IncrementadorDeCodigoConcern

	has_paper_trail

	attr_default :participa_da_elaboracao_do_ppa, false

	belongs_to :ppa

	validates_presence_of :ppa_id, :nome, :codigo, :sigla
	validates_presence_of :secretario, if: :participa_da_elaboracao_do_ppa?

	validates_uniqueness_of :nome, :codigo, :sigla, scope: :ppa_id
	validates :ppa_id, immutable: true

	has_many :programas, dependent: :restrict_with_exception
	has_many :objetivos, dependent: :restrict_with_exception
	has_many :unidades_orcamentarias, dependent: :restrict_with_exception

	validates :data_da_legislacao, date: { allow_blank: true }

	validates_numericality_of :codigo, greater_than: 0, less_than: 100

	after_initialize :sugestao_de_codigo, if: :new_record?

	def codigo_e_nome
		"#{codigo_com_zeros} - #{nome}"
	end

	def codigo_e_sigla
		"#{codigo_com_zeros} - #{sigla}"
	end

	def codigo_com_zeros
		self.codigo.try(:digitos, 2)
	end

	private
	def sugestao_de_codigo
		gerar_sugestao_codigo( :codigo, 2, {ppa_id: ppa_id} ) if (ppa.present? && codigo.blank?)
	end
end
