feat(procedure): only purge procedures without dossiers

This commit is contained in:
Paul Chavard 2022-01-12 11:31:05 +01:00
parent 914c2a62f8
commit 403e71b41f
9 changed files with 61 additions and 140 deletions

View file

@ -16,39 +16,6 @@ module Manager
end
end
#
# Custom actions
#
def discard
dossier = Dossier.find(params[:id])
dossier.discard_and_keep_track!(current_super_admin, :manager_request)
logger.info("Le dossier #{dossier.id} est supprimé par #{current_super_admin.email}")
flash[:notice] = "Le dossier #{dossier.id} a été supprimé."
redirect_to manager_dossier_path(dossier)
end
def restore
dossier = Dossier.with_discarded.find(params[:id])
dossier.restore(current_super_admin)
flash[:notice] = "Le dossier #{dossier.id} a été restauré."
redirect_to manager_dossier_path(dossier)
end
def repasser_en_instruction
dossier = Dossier.find(params[:id])
dossier.repasser_en_instruction(instructeur: current_super_admin)
logger.info("Le dossier #{dossier.id} est repassé en instruction par #{current_super_admin.email}")
flash[:notice] = "Le dossier #{dossier.id} est repassé en instruction."
redirect_to manager_dossier_path(dossier)
end
private
def unfiltered_list?

View file

@ -1,10 +1,7 @@
class Cron::DiscardedProceduresDeletionJob < Cron::CronJob
self.schedule_expression = "every day at 1 am"
def perform(*args)
Procedure.discarded_expired.find_each do |procedure|
procedure.dossiers.with_discarded.destroy_all
procedure.destroy
end
def perform
Procedure.purge_discarded
end
end

View file

@ -539,10 +539,6 @@ class Dossier < ApplicationRecord
en_construction? || termine?
end
def can_be_deleted_by_manager?
kept? && can_be_deleted_by_user?
end
def messagerie_available?
!brouillon? && !user_deleted? && !archived
end
@ -704,10 +700,6 @@ class Dossier < ApplicationRecord
termine? && hidden_by_administration? && hidden_by_user?
end
def can_be_restored_by_manager?
hidden_by_administration? || discarded? && !procedure.discarded?
end
def expose_legacy_carto_api?
procedure.expose_legacy_carto_api?
end

View file

@ -649,7 +649,7 @@ class Procedure < ApplicationRecord
end
def can_be_deleted_by_administrateur?
brouillon? || dossiers.state_instruction_commencee.empty?
brouillon? || dossiers.state_en_instruction.empty?
end
def can_be_deleted_by_manager?
@ -663,18 +663,25 @@ class Procedure < ApplicationRecord
close!
end
dossiers.each do |dossier|
dossiers.termine.visible_by_administration.each do |dossier|
dossier.discard_and_keep_track!(author, :procedure_removed)
end
discard!
end
def purge_discarded
if !dossiers.with_discarded.exists?
destroy
end
end
def self.purge_discarded
discarded_expired.find_each(&:purge_discarded)
end
def restore(author)
if discarded? && undiscard
dossiers.with_discarded.discarded.find_each do |dossier|
dossier.restore(author)
end
dossiers.hidden_by_administration.find_each do |dossier|
dossier.restore(author)
end

View file

@ -26,17 +26,6 @@ as well as a link to its edit page.
(Supprimé)
<% end %>
</h1>
<div>
<% if dossier.accepte? %>
<%= link_to 'Repasser en instruction', repasser_en_instruction_manager_dossier_path(dossier), method: :post, class: 'button', data: { confirm: "Confirmez vous le passage en instruction du dossier ?" } %>
<% end %>
<% if dossier.can_be_deleted_by_manager? %>
<%= link_to 'Supprimer le dossier', discard_manager_dossier_path(dossier), method: :post, class: 'button', data: { confirm: "Confirmez vous la suppression du dossier ?" } %>
<% elsif dossier.can_be_restored_by_manager? %>
<%= link_to 'Restaurer le dossier', restore_manager_dossier_path(dossier), method: :post, class: 'button', data: { confirm: "Confirmez vous la restauration du dossier ?" } %>
<% end %>
</div>
</header>
<section class="main-content__body">