class Licitacao::ImportacaoTcmContrato < ApplicationRecord
	has_paper_trail

	attr_accessor :unidade_orcamentaria_id
	attr_accessor :ata_de_registro_de_precos
	attr_accessor :projeto_id

	belongs_to :importacao_tcm_processo, class_name: "Licitacao::ImportacaoTcmProcesso"
	belongs_to :contrato, class_name: 'Licitacao::Contrato'

	validates_presence_of :exercicio, :numero_do_contrato, :unidade_orcamentaria_id
	validates_uniqueness_of :numero_do_contrato, scope: :importacao_tcm_processo_id

	validates_length_of :exercicio, is: 4

	after_validation :gera_contrato, on: :create

	# BOOLEANS
	def de_ata?
		self.ata_de_registro_de_precos.present?
	end

	private
	def gera_contrato
		ActiveRecord::Base.transaction do
			begin
				if self.de_ata?
					ata = Licitacao::AtaDeRegistroDePrecos.find(ata_de_registro_de_precos)
					projeto = Licitacao::Projeto.find(projeto_id)
					retorno = ImportacaoTcm::LicitacaoContrato.importar(projeto, self.numero_do_contrato, self.exercicio, self.unidade_orcamentaria_id) if !self.numero_do_contrato.blank? && !self.exercicio.blank? && !self.unidade_orcamentaria_id.blank?
					self.contrato_id = retorno.id unless retorno.nil?
				else
					retorno = ImportacaoTcm::LicitacaoContrato.importar(importacao_tcm_processo.projeto, self.numero_do_contrato, self.exercicio, self.unidade_orcamentaria_id) if !self.numero_do_contrato.blank? && !self.exercicio.blank? && !self.unidade_orcamentaria_id.blank?
					self.contrato_id = retorno.id unless retorno.nil?
				end
			rescue Exception => e
				errors.add(:numero_do_contrato, e.message)
				raise ActiveRecord::Rollback
			end
		end
	end
end
