vulco_app/app/models/v_contact.rb
2019-11-03 17:12:10 +01:00

59 lines
1.3 KiB
Ruby

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