From bbdb446dfd35752c9c6fcadac5ae570007a9efed Mon Sep 17 00:00:00 2001 From: Frederic Merizen Date: Thu, 11 Oct 2018 19:27:58 +0200 Subject: [PATCH] [#2772] For unmigrated dossiers, make read-only access possible and notify usager --- app/mailers/dossier_mailer.rb | 9 ++++++ .../notify_unmigrated_to_user.html.haml | 26 +++++++++++++++++ ...181009130216_restore_deleted_dossiers.rake | 29 +++++++++++++++---- 3 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 app/views/dossier_mailer/notify_unmigrated_to_user.html.haml diff --git a/app/mailers/dossier_mailer.rb b/app/mailers/dossier_mailer.rb index eb8f08629..65d7e68e6 100644 --- a/app/mailers/dossier_mailer.rb +++ b/app/mailers/dossier_mailer.rb @@ -29,4 +29,13 @@ class DossierMailer < ApplicationMailer mail(to: dossier.user.email, subject: @subject) end + + def notify_unmigrated_to_user(dossier, new_procedure) + @dossier = dossier + @dossier_kind = dossier.brouillon? ? 'brouillon' : 'dossier' + @subject = "Changement de procédure pour votre #{@dossier_kind} n° #{@dossier.id}" + @new_procedure = new_procedure + + mail(to: dossier.user.email, subject: @subject) + end end diff --git a/app/views/dossier_mailer/notify_unmigrated_to_user.html.haml b/app/views/dossier_mailer/notify_unmigrated_to_user.html.haml new file mode 100644 index 000000000..0bf06540c --- /dev/null +++ b/app/views/dossier_mailer/notify_unmigrated_to_user.html.haml @@ -0,0 +1,26 @@ +- content_for(:title, @subject) + +%h1 Bonjour, + +%p + Vous avez commencé un #{@dossier_kind}, + = link_to("n° #{@dossier.id}", dossier_url(@dossier)) + sur la procédure « #{@dossier.procedure.libelle} ». + En raison d’un changement dans la procédure, votre #{@dossier_kind} a été inaccessible pendant quelques jours. + L’accès est à présent à nouveau possible. + +%p + Malheureusement, en raison des changements dans le procédure, vous ne pourrez pas mener à terme le #{@dossier_kind} commencé. + Si votre démarche est toujours d’actualité, nous vous invitons à la recommencer sur + = link_to("la nouvelle procédure", commencer_url(@new_procedure.path)) + \. + +%p + Nous avons pris des mesures pour nous assurer qu’un tel désagrément ne se reproduise pas, + et vous présentons nos excuses pour la gène occasionnée. + +%p + Bonne journée, + +%p + L'équipe demarches-simplifiees.fr diff --git a/lib/tasks/deployment/20181009130216_restore_deleted_dossiers.rake b/lib/tasks/deployment/20181009130216_restore_deleted_dossiers.rake index 28c434c24..387d5cf99 100644 --- a/lib/tasks/deployment/20181009130216_restore_deleted_dossiers.rake +++ b/lib/tasks/deployment/20181009130216_restore_deleted_dossiers.rake @@ -172,20 +172,37 @@ namespace :after_party do end def restore_deleted_dossiers(deleted_procedure_id, new_procedure_id, champ_mapping, champ_private_mapping, pj_mapping) - Dossier.unscoped - .joins('JOIN procedures ON procedures.id = dossiers.procedure_id') - .where(procedure_id: deleted_procedure_id) - .where('dossiers.hidden_at >= procedures.hidden_at') - .update_all(hidden_at: nil) - source_procedure = Procedure.unscoped.find(deleted_procedure_id) destination_procedure = Procedure.find(new_procedure_id) + deleted_dossiers = Dossier.unscoped + .where(procedure_id: deleted_procedure_id) + .where('dossiers.hidden_at >= ?', source_procedure.hidden_at) + + deleted_dossier_ids = deleted_dossiers.pluck(:id).to_a + deleted_dossiers.update_all(hidden_at: nil) + + source_procedure + .update_columns( + hidden_at: nil, + archived_at: source_procedure.hidden_at, + aasm_state: :archivee + ) + migrator = Tasks::DossierProcedureMigrator.new(source_procedure, destination_procedure, champ_mapping, champ_private_mapping, pj_mapping) do |dossier| DossierMailer.notify_undelete_to_user(dossier).deliver_later end migrator.check_consistency migrator.migrate_dossiers + + source_procedure.dossiers.where(id: deleted_dossier_ids).find_each do |dossier| + if dossier.termine? + DossierMailer.notify_undelete_to_user(dossier).deliver_later + else + rake_puts "Dossier #{dossier.id} non migré\n" + DossierMailer.notify_unmigrated_to_user(dossier, destination_procedure).deliver_later + end + end end end.new.run end