correctif(ResetExpiringDossiersJob): timeout sur la prod, utilise une requete plus générique mais plus rapide [on ne scope pas aux dossiers ayant ete notifies, on les reset tous car ca timeouté

This commit is contained in:
Martin 2023-12-05 17:49:19 +01:00 committed by mfo
parent 51c5a8d0f7
commit b0e818f8f1
2 changed files with 17 additions and 7 deletions

View file

@ -1,13 +1,15 @@
class ResetExpiringDossiersJob < ApplicationJob
def perform(procedure)
procedure.dossiers
.where.not(brouillon_close_to_expiration_notice_sent_at: nil)
.or(Dossier.where.not(en_construction_close_to_expiration_notice_sent_at: nil))
.or(Dossier.where.not(termine_close_to_expiration_notice_sent_at: nil))
procedure
.dossiers
.in_batches do |relation|
relation.update_all(brouillon_close_to_expiration_notice_sent_at: nil,
en_construction_close_to_expiration_notice_sent_at: nil,
termine_close_to_expiration_notice_sent_at: nil)
relation.each do |dossier|
if dossier.expiration_started?
dossier.update(brouillon_close_to_expiration_notice_sent_at: nil,
en_construction_close_to_expiration_notice_sent_at: nil,
termine_close_to_expiration_notice_sent_at: nil)
end
end
end
end
end

View file

@ -484,6 +484,14 @@ class Dossier < ApplicationRecord
end
end
def expiration_started?
[
brouillon_close_to_expiration_notice_sent_at,
en_construction_close_to_expiration_notice_sent_at,
termine_close_to_expiration_notice_sent_at
].any?(&:present?)
end
def motivation
if termine?
traitement&.motivation || read_attribute(:motivation)