class Controladoria::Visto < ApplicationRecord
	include MensagemConcern

	has_paper_trail
	attr_default :tipo, 0

	belongs_to :vistoriavel, polymorphic: true
	belongs_to :vistoriador, class_name: 'Usuario', required: true

	validates_presence_of :tipo
	validates_presence_of :mensagem, unless: :aprovado?

	validate :nao_permite_mudar_visto

	enum tipo: {
		controladoria: 0,
		copfin: 1
	}

	scope :aprovados, lambda { where(aprovado: true) }
	scope :reprovados, lambda { where(aprovado: false) }

	after_create :cria_mensagem_parecer_da_procuradoria

	def nao_permite_mudar_visto
		errors.add(:aprovado, "não pode mudar visto") if self.persisted? && self.aprovado_changed?
	end

end
