class GestaoDeEstoque::MembroDaComissao < ApplicationRecord
  has_paper_trail

  include TradutorConcern

  belongs_to :comissao, class_name: "GestaoDeEstoque::Comissao", foreign_key: "comissao_id"
  belongs_to :agente_publico_municipal, class_name: "Base::AgentePublicoMunicipal", foreign_key: "agente_publico_municipal_id"

  validates_uniqueness_of :agente_publico_municipal_id, scope: :comissao_id, on: :create, message: "Esse membro já foi adicionado"

  validates :agente_publico_municipal_id, presence: :true
  validates :data_de_admissao, presence: :true
  validates :tipo_de_membro, presence: :true

  validate :valida_se_ja_existe_um_presidente_da_comissao, if: :tipo_de_membro_eh_presidente?

  enum tipo_de_membro: {
    presidente: 0,
    membro_comum: 1,
    suplente_exercendo_a_funcao_de_membro: 2
  }

  def tipo_de_membro_eh_presidente?
    self.tipo_de_membro == 'presidente'
  end

  def valida_se_ja_existe_um_presidente_da_comissao
    if self.new_record?
      errors.add(:tipo_de_membro, 'Já existe um presidente na comissão') if GestaoDeEstoque::MembroDaComissao.find_by(comissao_id: self.comissao_id, tipo_de_membro: 'presidente').present?
    end
  end

  def ativo?
    self.data_de_saida.nil?
  end
end
