add grace period to deleted dossiers

This commit is contained in:
kara Diaby 2020-11-26 15:13:32 +01:00 committed by simon lehericey
parent d2f3bb18f9
commit f3c4040d2d
10 changed files with 103 additions and 51 deletions

View file

@ -263,13 +263,19 @@ class Dossier < ApplicationRecord
with_discarded
.discarded
.state_brouillon
.where('hidden_at < ?', 1.month.ago)
.where('hidden_at < ?', 1.week.ago)
end
scope :discarded_en_construction_expired, -> do
with_discarded
.discarded
.state_en_construction
.where('dossiers.hidden_at < ?', 1.month.ago)
.where('dossiers.hidden_at < ?', 1.week.ago)
end
scope :discarded_termine_expired, -> do
with_discarded
.discarded
.state_termine
.where('dossiers.hidden_at < ?', 1.week.ago)
end
scope :brouillon_near_procedure_closing_date, -> do
@ -520,27 +526,25 @@ class Dossier < ApplicationRecord
end
end
def deleted_by_instructeur_and_keep_track!(author)
if keep_track_on_deletion?
deleted_dossier = DeletedDossier.create_from_dossier(self, :instructeur_request)
self.delete_operations_logs
log_dossier_operation(author, :supprime_par_instructeur, self)
DossierMailer.notify_instructeur_deletion_to_user(deleted_dossier, user.email).deliver_later
self.destroy
end
end
def discard_and_keep_track!(author, reason)
if keep_track_on_deletion? && en_construction?
deleted_dossier = DeletedDossier.create_from_dossier(self, reason)
if keep_track_on_deletion?
if en_construction?
deleted_dossier = DeletedDossier.create_from_dossier(self, reason)
administration_emails = followers_instructeurs.present? ? followers_instructeurs.map(&:email) : procedure.administrateurs.map(&:email)
administration_emails.each do |email|
DossierMailer.notify_deletion_to_administration(deleted_dossier, email).deliver_later
administration_emails = followers_instructeurs.present? ? followers_instructeurs.map(&:email) : procedure.administrateurs.map(&:email)
administration_emails.each do |email|
DossierMailer.notify_deletion_to_administration(deleted_dossier, email).deliver_later
end
DossierMailer.notify_deletion_to_user(deleted_dossier, user.email).deliver_later
log_dossier_operation(author, :supprimer, self)
elsif termine?
deleted_dossier = DeletedDossier.create_from_dossier(self, reason)
DossierMailer.notify_instructeur_deletion_to_user(deleted_dossier, user.email).deliver_later
log_dossier_operation(author, :supprimer, self)
end
DossierMailer.notify_deletion_to_user(deleted_dossier, user.email).deliver_later
log_dossier_operation(author, :supprimer, self)
end
discard!
@ -807,10 +811,6 @@ class Dossier < ApplicationRecord
private
def delete_operations_logs
DossierOperationLog.where(dossier: self).destroy_all
end
def geo_areas
champs.includes(:geo_areas).flat_map(&:geo_areas) + champs_private.includes(:geo_areas).flat_map(&:geo_areas)
end