diff --git a/app/models/dossier.rb b/app/models/dossier.rb index c15644939..08bc0864c 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -199,10 +199,9 @@ class Dossier < ApplicationRecord .joins(:procedure) .where("dossiers.en_instruction_at + (duree_conservation_dossiers_dans_ds * INTERVAL '1 month') - INTERVAL :expires_in < :now", { now: Time.zone.now, expires_in: INTERVAL_BEFORE_EXPIRATION }) end - scope :termine_close_to_expiration, -> do - state_termine - .joins(:procedure) - .where("dossiers.processed_at + (duree_conservation_dossiers_dans_ds * INTERVAL '1 month') - INTERVAL :expires_in < :now", { now: Time.zone.now, expires_in: INTERVAL_BEFORE_EXPIRATION }) + def self.termine_close_to_expiration + dossier_ids = Traitement.termine_close_to_expiration.pluck(:dossier_id).uniq + Dossier.where(id: dossier_ids) end scope :brouillon_expired, -> do diff --git a/app/models/traitement.rb b/app/models/traitement.rb index f0a414f59..88e36eb45 100644 --- a/app/models/traitement.rb +++ b/app/models/traitement.rb @@ -1,4 +1,11 @@ class Traitement < ApplicationRecord belongs_to :dossier belongs_to :instructeur + + scope :termine_close_to_expiration, -> do + joins(dossier: :procedure) + .where(state: Dossier::TERMINE) + .where('dossiers.state' => Dossier::TERMINE) + .where("traitements.processed_at + (procedures.duree_conservation_dossiers_dans_ds * INTERVAL '1 month') - INTERVAL :expires_in < :now", { now: Time.zone.now, expires_in: Dossier::INTERVAL_BEFORE_EXPIRATION }) + end end