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