#load './lib/tasks/eventos_contabeis/importa_tabela_dos_eventos_contabeis.rake'
class Contabilidade::ImportacaoDeEventoContabil < ApplicationRecord
  has_paper_trail

  belongs_to :orcamento, class_name: 'Orcamento', required: true

  has_many :eventos_contabeis, class_name: 'Contabilidade::EventoContabil', dependent: :destroy
  has_many :movimentacoes_do_plano_de_contas, through: :eventos_contabeis
  
  has_attached_file :arquivo_tabela
  validates_attachment_content_type :arquivo_tabela, content_type: ["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"]

  validates :data_da_importacao, presence: true
  validates :arquivo_tabela_file_name, uniqueness: {scope: :orcamento_id}

  after_create :cria_eventos

  private
  def vincula_eventos_contabeis_com_importacao
    Contabilidade::EventoContabil.where(
      contabilidade_eventos_contabeis: {
        created_at: Time.zone.now.beginning_of_day..Time.zone.now.end_of_day,
        importacao_de_evento_contabil_id: nil,
      },
    ).update_all(importacao_de_evento_contabil_id: id)
  end

  def cria_eventos
    begin
      #Rake::Task['db:importa_tabela_dos_eventos_contabeis'].execute(Rake::TaskArguments.new([:exercicio, :diretorio], [orcamento.exercicio, arquivo_tabela.queued_for_write[:original].path]))
      self.falhou = false
    rescue => exception
      self.falhou = true
    end
    self.save
    vincula_eventos_contabeis_com_importacao
  end
end
