diff --git a/app/controllers/users/dossiers_controller.rb b/app/controllers/users/dossiers_controller.rb index 7a7d0590b..f90716df6 100644 --- a/app/controllers/users/dossiers_controller.rb +++ b/app/controllers/users/dossiers_controller.rb @@ -166,6 +166,12 @@ module Users end end + def extend_conservation + dossier.update(en_construction_conservation_extension: dossier.en_construction_conservation_extension + 1.month) + flash[:notice] = 'Votre dossier sera conservé un mois supplémentaire' + redirect_to dossier_path(@dossier) + end + def modifier @dossier = dossier_with_champs end diff --git a/app/models/dossier.rb b/app/models/dossier.rb index 23fc39016..ab93d3ec2 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -172,7 +172,7 @@ class Dossier < ApplicationRecord scope :en_construction_close_to_expiration, -> do en_construction .joins(:procedure) - .where("dossiers.en_construction_at + (duree_conservation_dossiers_dans_ds * interval '1 month') - INTERVAL '1 month' <= now()") + .where("dossiers.en_construction_at + dossiers.en_construction_conservation_extension + (duree_conservation_dossiers_dans_ds * interval '1 month') - INTERVAL '1 month' <= now()") end scope :en_instruction_close_to_expiration, -> do en_instruction @@ -310,6 +310,10 @@ class Dossier < ApplicationRecord instruction_commencee? && retention_end_date <= Time.zone.now end + def en_construction_close_to_expiration? + Dossier.en_construction_close_to_expiration.where(id: self).present? + end + def assign_to_groupe_instructeur(groupe_instructeur, author = nil) if groupe_instructeur.procedure == procedure && groupe_instructeur != self.groupe_instructeur if update(groupe_instructeur: groupe_instructeur, groupe_instructeur_updated_at: Time.zone.now) diff --git a/app/views/users/dossiers/show/_header.html.haml b/app/views/users/dossiers/show/_header.html.haml index e148b90d7..607964cfd 100644 --- a/app/views/users/dossiers/show/_header.html.haml +++ b/app/views/users/dossiers/show/_header.html.haml @@ -22,6 +22,16 @@ %li = link_to "Tout le dossier", dossier_path(dossier, format: :pdf), target: "_blank", rel: "noopener", class: "menu-item menu-link" + - if dossier.en_construction_close_to_expiration? + .card.warning + .card-title Votre dossier va expirer + %p + Votre dossier a été déposé, mais va bientôt expirer. Cela signifie qu'il va bientôt être supprimé sans avoir été traité par l’administration. + Si vous souhaitez le conserver afin de poursuivre la démarche, vous pouvez le conserver + un mois de plus en cliquant sur le bouton ci-dessous. + %br + = button_to 'Repousser sa suppression', users_dossier_repousser_expiration_path(dossier), class: 'button secondary' + %ul.tabs = dynamic_tab_item('Résumé', dossier_path(dossier)) = dynamic_tab_item('Demande', [demande_dossier_path(dossier), modifier_dossier_path(dossier)]) diff --git a/config/routes.rb b/config/routes.rb index 32bc4a620..27144a8f5 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -146,6 +146,7 @@ Rails.application.routes.draw do post '/carte/zones' => 'carte#zones' get '/carte' => 'carte#show' post '/carte' => 'carte#save' + post '/repousser-expiration' => 'dossiers#extend_conservation' end # Redirection of legacy "/users/dossiers" route to "/dossiers"