class Pncp::OrgaoPncp < ApplicationRecord
  has_paper_trail

  has_many :unidades_gestoras, class_name: 'Loa::UnidadeGestora'

  validates_presence_of :cnpj, :razao_social, :poder_id, :esfera_id

  after_create :defini_vinculo_com_as_unidades
  
  enum poder_id: {
    Legislativo: "L",
    Executivo: "E",
    Judiciário: "J"
  }

  enum esfera_id: {
    Federal: "F",
    Estadual: "E",
    Municipal: "M",
    Distrital: "D"
  }

  def defini_vinculo_com_as_unidades
    ugs = Loa::UnidadeGestora.joins(unidades_orcamentarias: :tipo_de_unidade_administrativa).where('base_tipos_de_unidades_administrativas.poder_associado = ?', Base::TipoDeUnidadeAdministrativa.poderes_associados[poder_id.downcase]).distinct.all
    ugs.each do |ug|
      ug.update_column(:orgao_pncp_id, self.id)
    end
  end
end
