class Patrimonio::BensDaImportacaoDeDadosPatrimonial < ApplicationRecord
  has_paper_trail

  belongs_to :importacao_de_dados_patrimonial, class_name: 'Patrimonio::ImportacaoDeDadosPatrimonial'
  belongs_to :bem_patrimonial, class_name: 'Patrimonio::BemPatrimonial'
  belongs_to :item, class_name: 'Base::Item'

  def gerar_bem_patrimonial(dados_extras_do_bem)
    unidade_gestora_id = Loa::UnidadeGestora.find_by('nome ilike ?', self.secretaria).id
    ultima_sequencia = Patrimonio::BemPatrimonial.where(orcamento_id: contexto_atual.id).order(sequencia: :desc).first.try(:sequencia) + 1
    bem = Patrimonio::BemPatrimonial.new(
      numero_do_tombamento: self.tombo_atual.to_i,
      numero_tombamento_antigo: self.tombo_anterior.to_i,
      status: 'ativo',
      descricao: self.especificacao,
      data_do_tombamento: Date.today,
      unidade_gestora_id: unidade_gestora_id,
      dados_extras_do_bem_id: dados_extras_do_bem.id,
      orcamento_id: contexto_atual.id,
      sequencia: ultima_sequencia,
      inicio_da_depreciacao: Date.today + 1.month,
      item_id: self.item.id,
      pcasp_estendido: self.classificacao
    )

    bem.save!
    if bem.present?
      self.update_column(:bem_patrimonial_id, bem.id)

    end
  end

  def gera_localizacao_inicial(bem_referencia)
    centro_de_custo = Controladoria::CentroDeCusto.find(self.id_centro_custo)
    responsavel = centro_de_custo.centro_de_custos_mae.responsavel_atual_patrimonial

    localizacao = Patrimonio::LocalizacaoDoBem.create!(
      bem_patrimonial_id: bem_referencia.id,
      centro_de_custo_id: centro_de_custo.id,
      agente_publico_municipal: responsavel.agente_publico_municipal,
      status: 2,
      data_de_inicio_na_localizacao: self.importacao_de_dados_patrimonial.data_de_importacao
    )

    responsavel_do_bem = Patrimonio::ResponsavelDoBemPatrimonial.create!(
      bem_patrimonial_id: bem_referencia.id,
      pessoa_id: responsavel.agente_publico_municipal.pessoa.id,
      data_inicio: self.importacao_de_dados_patrimonial.data_de_importacao,
      tipo_de_responsavel: 2
    )
    bem_referencia.update_column(:localizacao_atual_id, localizacao.id)

  end

end
