class Licitacao::UnidadeOrcamentariaPorSolucaoDoEtp < ApplicationRecord
  has_paper_trail
  attr_default :principal, false
  
  belongs_to :unidade_orcamentaria, class_name: 'Loa::UnidadeOrcamentaria', required: true
	belongs_to :solucao_do_etp, required: true
  
  has_many :itens_da_solucao_do_etp_por_unidade_orcamentaria, dependent: :destroy
  has_many :itens_da_solucao_do_etp, through: :itens_da_solucao_do_etp_por_unidade_orcamentaria
  
  validates_uniqueness_of :unidade_orcamentaria_id, scope: :solucao_do_etp_id, if: Proc.new{ self.persisted? }  
  validate :verifica_se_unidade_orcamentaria_tem_ordenador

  self.table_name = 'licitacao_unidades_orcamentarias_por_solucao_do_etp'
  
  def codigo_descricao_unidade_orcamentaria_convidadas
    "#{self.unidade_orcamentaria.try((:codigo))} - #{self.unidade_orcamentaria.try((:nome))}"
  end
  
  def informacao_itens_da_solucao
    self.itens_da_solucao_do_etp_por_unidade_orcamentaria.find {|item| item }
  end
  
  def verifica_se_unidade_orcamentaria_tem_ordenador
		if self.unidade_orcamentaria.present? and self.unidade_orcamentaria.ordenadores_de_despesa.empty?
			errors.add(:unidade_orcamentaria_id, "Essa unidade orçamentaria não possui ordenador de despesa")
		end
	end
end