class VContact < ApplicationRecord
  
  
  def volumes
    VolumePeriodique.where(:codemanaginn => self.codemanaginn, :codeindicateur => "MGI000000001").order("datereception DESC")
    
  end
  
  def self.update_mvt
    
    vc_ids = VolumePeriodique.group(:codemanaginn).map{|a| a.codemanaginn}
    
    
    VContact.where(:enabled => true).where("codemanaginn not in(?)", vc_ids).update_all(:nbr_mvt => 0)
    
    return true
  end
  
  def self.update_caches(force = false)
    
    
    @gen_past_time = Time.now
    
    if !force
      v_contacts = VContact.where(:enabled => true, :nbr_mvt => nil)
    else
      v_contacts = VContact.where(:enabled => true)
    end
    
    #v_contacts = v_contacts.limit(2)
    
    v_contacts.each do |vc|
      puts vc.codemanaginn
      vc.cumul = vc.volumes.select("valeur","datereception").where("valeur > 0.0").sum(:valeur)
      vc.cagnotte = vc.volumes.select("valeur","datereception").sum(:valeur)
      vc.nbr_mvt = vc.volumes.count
      
      vc.last_volume_at = vc.volumes.select("datereception").first.datereception if vc.volumes.first
      
      vc.prime = (vc.ac_rate / 100.0) * vc.cagnotte
      
      vc.save
    end
    
    if @gen_past_time 
      
      return "Rendu en  #{(Time.now - @gen_past_time).round(3)}s"
    else
      
      return false
      
    end
    
    
  end
  
  
end
