class Tcm::CriticaDoModeloDoSim < ApplicationRecord
	has_paper_trail
	include TradutorConcern

	belongs_to :erros_do_lote
	belongs_to :modulo, polymorphic: true, required: true

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

	scope :projetos, -> { where( modulo_type: "Licitacao::Projeto")}
	scope :comissoes, -> { where( modulo_type: "Licitacao::Comissao")}
	scope :membros_das_comissoes, -> { where( modulo_type: "Licitacao::MembroDaComissao")}
	scope :pessoas_do_projeto, -> { where( modulo_type: "Licitacao::PessoaDoProjeto")}
	scope :contratos, -> { where( modulo_type: "Licitacao::Contrato")}
	scope :contratados, -> { where( modulo_type: "Licitacao::Contratado")}
	scope :aditivos, -> { where( modulo_type: "Licitacao::Aditivo")}
	scope :itens_do_processo, -> { where( modulo_type: "Licitacao::ItemDoLote")}
	scope :dotacoes, -> { where( modulo_type: "Loa::OrcamentoDaDespesa")}
	scope :eventos_contabeis, -> { where( modulo_type: "Contabilidade::EventoContabil")}
	scope :transferencias_federais, -> { where( modulo_type: "Obra::Transferencia")}
	scope :contas_extras_orcamentarias, -> { where( modulo_type: "Contabilidade::ContaExtraOrcamentaria")}

	def referente_a
		case self.modulo_type
		when "Licitacao::Projeto"
			"Processo Nº: #{self.modulo.numero_do_processo}. "
		when "Licitacao::Comissao"
			"Comissão: #{self.modulo.nome_tipo_numero_da_portaria_e_unidade}. "
		when "Licitacao::MembroDaComissao"
			"Membro da Comissão: #{self.modulo.comissao.nome_tipo_numero_da_portaria_e_unidade}. "
		when "Licitacao::PessoaDoProjeto"
			"Licitante/Fornecedor do Processo Nº: #{self.modulo.try(:projeto).try(:numero_do_processo)}. "
		when "Licitacao::Contrato"
			"Contrato Nº: #{self.modulo.numero} do Processo Nº: #{self.modulo.try(:projeto).try(:numero_do_processo)}. "
		when "Licitacao::Contratado"
			"Contratado do Processo Nº: #{self.modulo.try(:projeto).try(:numero_do_processo)}. "
		when "Licitacao::Aditivo"
			"Aditivo Nº: #{self.modulo.numero.to_s} do Contrato Nº: #{self.modulo.contrato.numero.to_s}. "
		when "Licitacao::ItemDoLote"
			"Item: #{self.modulo.item.codigo_e_descricao_do_item} do Processo Nº: #{self.modulo.try(:projeto).try(:numero_do_processo)}. "
		when "Contabilidade::EventoContabil"
			"Evento Contabil: #{self.modulo.detalhamento.to_s} - #{self.modulo.nome}. "
		when "Loa::OrcamentoDaDespesa"
			"202"
		when "Obra::Transferencia"
			"Transferência/Convênio: #{self.modulo.codigo_transferencia}. "
		when "Contabilidade::Empenho"
			"601 (NOTAS DE EMPENHOS):"
		when "Contabilidade::ContaExtraOrcamentaria"
			"Conta Extraorçamentária: #{self.modulo.codigo}. "
		when "Contabilidade::TalaoDeReceita"
			"Talão de Receita: #{self.modulo.numero_do_talao}"
		when "Contabilidade::NotaFiscal"
			"602 (NOSTAS FISCAIS):"
		when "Contabilidade::Pagamento"
			"Pagamento: #{self.modulo.numero}"
		when "Configuracao"
			"Configuração SIM: "
		when "Base::Pessoa"
			"602 (NOSTAS FISCAIS):"
		when "Contabilidade::SituacaoDaObra"
			"903 (STATUS DA OBRA):"
		when "Contabilidade::Obra"
			"901 (OBRAS OU SERVIÇOS DE ENGENHARIA):"
		when "Contabilidade::Decreto"
			"701 && 703"
		when "Patrimonio::BemPatrimonial"
			"980 && 981 && 982 && 983 && 984"
		when "Base::AgentePublicoMunicipal"
			"980 && 981 && 982 && 984"
		else
			"#{self.modulo.class.model_name.human}" rescue ""
		end
	end
end
