Merge pull request #2559 from betagouv/fix-2544
[Fix #2544] Add a task to fix now invalid templates
This commit is contained in:
commit
530baf6ca6
1 changed files with 75 additions and 0 deletions
75
lib/tasks/2018_09_12_fix_templates.rake
Normal file
75
lib/tasks/2018_09_12_fix_templates.rake
Normal file
|
@ -0,0 +1,75 @@
|
|||
namespace :'2018_09_12_fix_templates' do
|
||||
task run: :environment do
|
||||
dossiers_with_invalid_attestations = find_dossiers_with_sent_and_invalid_attestations
|
||||
fix_templates
|
||||
fixed_attestations = regenerate_attestations(dossiers_with_invalid_attestations)
|
||||
send_regenerated_attestations(dossiers_with_invalid_attestations)
|
||||
end
|
||||
|
||||
# 16:15 in Paris -> 14:15 UTC
|
||||
DEPLOY_DATETIME = DateTime.new(2018, 9, 5, 14, 15, 0)
|
||||
|
||||
def find_dossiers_with_sent_and_invalid_attestations
|
||||
invalid_procedures_ids = AttestationTemplate
|
||||
.where("body LIKE '%--libellé procédure--%'")
|
||||
.pluck(:procedure_id)
|
||||
|
||||
dossiers_with_invalid_template_ids = Dossier
|
||||
.where(procedure_id: invalid_procedures_ids)
|
||||
.where(processed_at: DEPLOY_DATETIME..Time.now)
|
||||
.pluck(:id)
|
||||
|
||||
Attestation
|
||||
.includes(:dossier)
|
||||
.where(created_at: DEPLOY_DATETIME..Time.now)
|
||||
.where(dossier_id: dossiers_with_invalid_template_ids)
|
||||
.map(&:dossier)
|
||||
end
|
||||
|
||||
def fix_templates
|
||||
klasses = [
|
||||
Mails::ClosedMail,
|
||||
Mails::InitiatedMail,
|
||||
Mails::ReceivedMail,
|
||||
Mails::RefusedMail,
|
||||
Mails::WithoutContinuationMail,
|
||||
AttestationTemplate
|
||||
]
|
||||
|
||||
klasses.each do |klass|
|
||||
klass
|
||||
.where("body LIKE '%--libellé procédure--%'")
|
||||
.each do |instance|
|
||||
|
||||
instance.update(body: instance.body.gsub("--libellé procédure--", "--libellé démarche--"))
|
||||
rake_puts "Body mis-à-jour pour #{klass.to_s}##{instance.id}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def delete_then_regenerate_attestations(dossiers_with_invalid_attestations)
|
||||
dossiers_with_invalid_attestations.each do |dossier|
|
||||
begin
|
||||
dossier.attestation.destroy
|
||||
|
||||
dossier.attestation = dossier.build_attestation
|
||||
dossier.save
|
||||
|
||||
rake_puts "Attestation regénérée pour le dossier #{dossier.id}"
|
||||
rescue
|
||||
rake_puts "Erreur lors de la régénération de l'attestation pour le dossier #{dossier.id}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def send_regenerated_attestations(dossiers_with_invalid_attestations)
|
||||
dossiers_with_invalid_attestations.each do |dossier|
|
||||
begin
|
||||
ResendAttestationMailer.resend_attestation(dossier).deliver_later
|
||||
rake_puts "Email envoyé à #{dossier.user.email} pour le dossier #{dossier.id}"
|
||||
rescue
|
||||
rake_puts "Erreur lors de l'envoi de l'email à #{dossier.user.email} pour le dossier #{dossier.id}"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue