Merge pull request #10246 from tchak/fix-enqueu-jobs-after-commit
fix(dossier): enqueue jobs after commit
This commit is contained in:
commit
61a74239f8
4 changed files with 304 additions and 242 deletions
1
Gemfile
1
Gemfile
|
@ -10,6 +10,7 @@ gem 'active_storage_validations'
|
||||||
gem 'addressable'
|
gem 'addressable'
|
||||||
gem 'administrate'
|
gem 'administrate'
|
||||||
gem 'administrate-field-enum' # Allow using Field::Enum in administrate
|
gem 'administrate-field-enum' # Allow using Field::Enum in administrate
|
||||||
|
gem 'after_commit_everywhere'
|
||||||
gem 'after_party'
|
gem 'after_party'
|
||||||
gem 'ancestry'
|
gem 'ancestry'
|
||||||
gem 'anchored'
|
gem 'anchored'
|
||||||
|
|
|
@ -116,6 +116,9 @@ GEM
|
||||||
administrate-field-enum (0.0.9)
|
administrate-field-enum (0.0.9)
|
||||||
administrate (~> 0.12)
|
administrate (~> 0.12)
|
||||||
aes_key_wrap (1.1.0)
|
aes_key_wrap (1.1.0)
|
||||||
|
after_commit_everywhere (1.4.0)
|
||||||
|
activerecord (>= 4.2)
|
||||||
|
activesupport
|
||||||
after_party (1.11.2)
|
after_party (1.11.2)
|
||||||
ancestry (4.3.3)
|
ancestry (4.3.3)
|
||||||
activerecord (>= 5.2.6)
|
activerecord (>= 5.2.6)
|
||||||
|
@ -859,6 +862,7 @@ DEPENDENCIES
|
||||||
addressable
|
addressable
|
||||||
administrate
|
administrate
|
||||||
administrate-field-enum
|
administrate-field-enum
|
||||||
|
after_commit_everywhere
|
||||||
after_party
|
after_party
|
||||||
ancestry
|
ancestry
|
||||||
anchored
|
anchored
|
||||||
|
|
287
app/models/concerns/dossier_state_concern.rb
Normal file
287
app/models/concerns/dossier_state_concern.rb
Normal file
|
@ -0,0 +1,287 @@
|
||||||
|
module DossierStateConcern
|
||||||
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
|
def after_passer_en_construction
|
||||||
|
self.conservation_extension = 0.days
|
||||||
|
self.depose_at = self.en_construction_at = self.traitements
|
||||||
|
.passer_en_construction
|
||||||
|
.processed_at
|
||||||
|
|
||||||
|
save!
|
||||||
|
|
||||||
|
RoutingEngine.compute(self)
|
||||||
|
|
||||||
|
MailTemplatePresenterService.create_commentaire_for_state(self, Dossier.states.fetch(:en_construction))
|
||||||
|
procedure.compute_dossiers_count
|
||||||
|
end
|
||||||
|
|
||||||
|
def after_commit_passer_en_construction
|
||||||
|
NotificationMailer.send_en_construction_notification(self).deliver_later
|
||||||
|
NotificationMailer.send_notification_for_tiers(self).deliver_later if self.for_tiers?
|
||||||
|
end
|
||||||
|
|
||||||
|
def after_passer_en_instruction(h)
|
||||||
|
instructeur = h[:instructeur]
|
||||||
|
instructeur.follow(self)
|
||||||
|
|
||||||
|
self.en_construction_close_to_expiration_notice_sent_at = nil
|
||||||
|
self.conservation_extension = 0.days
|
||||||
|
self.en_instruction_at = self.traitements
|
||||||
|
.passer_en_instruction(instructeur: instructeur)
|
||||||
|
.processed_at
|
||||||
|
save!
|
||||||
|
|
||||||
|
MailTemplatePresenterService.create_commentaire_for_state(self, Dossier.states.fetch(:en_instruction))
|
||||||
|
resolve_pending_correction!
|
||||||
|
|
||||||
|
log_dossier_operation(instructeur, :passer_en_instruction)
|
||||||
|
end
|
||||||
|
|
||||||
|
def after_commit_passer_en_instruction(h)
|
||||||
|
disable_notification = h.fetch(:disable_notification, false)
|
||||||
|
|
||||||
|
if !disable_notification
|
||||||
|
NotificationMailer.send_en_instruction_notification(self).deliver_later
|
||||||
|
NotificationMailer.send_notification_for_tiers(self).deliver_later if self.for_tiers?
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def after_passer_automatiquement_en_instruction
|
||||||
|
self.en_construction_close_to_expiration_notice_sent_at = nil
|
||||||
|
self.conservation_extension = 0.days
|
||||||
|
self.en_instruction_at = traitements.passer_en_instruction.processed_at
|
||||||
|
|
||||||
|
if procedure.declarative_en_instruction?
|
||||||
|
self.declarative_triggered_at = en_instruction_at
|
||||||
|
end
|
||||||
|
|
||||||
|
save!
|
||||||
|
|
||||||
|
MailTemplatePresenterService.create_commentaire_for_state(self, Dossier.states.fetch(:en_instruction))
|
||||||
|
|
||||||
|
if procedure.sva_svr_enabled?
|
||||||
|
# TODO: handle serialization errors when SIRET demandeur was not completed
|
||||||
|
log_automatic_dossier_operation(:passer_en_instruction, self)
|
||||||
|
else
|
||||||
|
log_automatic_dossier_operation(:passer_en_instruction)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def after_commit_passer_automatiquement_en_instruction
|
||||||
|
NotificationMailer.send_en_instruction_notification(self).deliver_later
|
||||||
|
NotificationMailer.send_notification_for_tiers(self).deliver_later if self.for_tiers?
|
||||||
|
end
|
||||||
|
|
||||||
|
def after_repasser_en_construction(h)
|
||||||
|
instructeur = h[:instructeur]
|
||||||
|
|
||||||
|
create_missing_traitemets
|
||||||
|
|
||||||
|
self.en_construction_close_to_expiration_notice_sent_at = nil
|
||||||
|
self.conservation_extension = 0.days
|
||||||
|
self.en_construction_at = self.traitements
|
||||||
|
.passer_en_construction(instructeur: instructeur)
|
||||||
|
.processed_at
|
||||||
|
|
||||||
|
save!
|
||||||
|
|
||||||
|
log_dossier_operation(instructeur, :repasser_en_construction)
|
||||||
|
end
|
||||||
|
|
||||||
|
def after_commit_repasser_en_construction
|
||||||
|
end
|
||||||
|
|
||||||
|
def after_accepter(h)
|
||||||
|
instructeur = h[:instructeur]
|
||||||
|
motivation = h[:motivation]
|
||||||
|
justificatif = h[:justificatif]
|
||||||
|
|
||||||
|
self.processed_at = self.traitements
|
||||||
|
.accepter(motivation: motivation, instructeur: instructeur)
|
||||||
|
.processed_at
|
||||||
|
save!
|
||||||
|
|
||||||
|
if justificatif
|
||||||
|
self.justificatif_motivation.attach(justificatif)
|
||||||
|
end
|
||||||
|
|
||||||
|
if attestation.nil?
|
||||||
|
self.attestation = build_attestation
|
||||||
|
end
|
||||||
|
|
||||||
|
save!
|
||||||
|
|
||||||
|
MailTemplatePresenterService.create_commentaire_for_state(self, Dossier.states.fetch(:accepte))
|
||||||
|
|
||||||
|
log_dossier_operation(instructeur, :accepter, self)
|
||||||
|
end
|
||||||
|
|
||||||
|
def after_commit_accepter(h)
|
||||||
|
disable_notification = h.fetch(:disable_notification, false)
|
||||||
|
|
||||||
|
if !disable_notification
|
||||||
|
NotificationMailer.send_accepte_notification(self).deliver_later
|
||||||
|
NotificationMailer.send_notification_for_tiers(self).deliver_later if self.for_tiers?
|
||||||
|
end
|
||||||
|
|
||||||
|
send_dossier_decision_to_experts(self)
|
||||||
|
remove_titres_identite!
|
||||||
|
end
|
||||||
|
|
||||||
|
def after_accepter_automatiquement
|
||||||
|
self.processed_at = traitements.accepter_automatiquement.processed_at
|
||||||
|
|
||||||
|
if procedure.declarative_accepte?
|
||||||
|
self.en_instruction_at = self.processed_at
|
||||||
|
self.declarative_triggered_at = self.processed_at
|
||||||
|
elsif procedure.sva?
|
||||||
|
self.sva_svr_decision_triggered_at = self.processed_at
|
||||||
|
end
|
||||||
|
|
||||||
|
save!
|
||||||
|
|
||||||
|
if attestation.nil?
|
||||||
|
self.attestation = build_attestation
|
||||||
|
end
|
||||||
|
|
||||||
|
save!
|
||||||
|
|
||||||
|
MailTemplatePresenterService.create_commentaire_for_state(self, Dossier.states.fetch(:accepte))
|
||||||
|
|
||||||
|
log_automatic_dossier_operation(:accepter, self)
|
||||||
|
end
|
||||||
|
|
||||||
|
def after_commit_accepter_automatiquement
|
||||||
|
NotificationMailer.send_accepte_notification(self).deliver_later
|
||||||
|
NotificationMailer.send_notification_for_tiers(self).deliver_later if self.for_tiers?
|
||||||
|
|
||||||
|
send_dossier_decision_to_experts(self)
|
||||||
|
remove_titres_identite!
|
||||||
|
end
|
||||||
|
|
||||||
|
def after_refuser(h)
|
||||||
|
instructeur = h[:instructeur]
|
||||||
|
motivation = h[:motivation]
|
||||||
|
justificatif = h[:justificatif]
|
||||||
|
|
||||||
|
self.processed_at = self.traitements
|
||||||
|
.refuser(motivation: motivation, instructeur: instructeur)
|
||||||
|
.processed_at
|
||||||
|
save!
|
||||||
|
|
||||||
|
if justificatif
|
||||||
|
self.justificatif_motivation.attach(justificatif)
|
||||||
|
end
|
||||||
|
|
||||||
|
save!
|
||||||
|
|
||||||
|
MailTemplatePresenterService.create_commentaire_for_state(self, Dossier.states.fetch(:refuse))
|
||||||
|
|
||||||
|
log_dossier_operation(instructeur, :refuser, self)
|
||||||
|
end
|
||||||
|
|
||||||
|
def after_commit_refuser(h)
|
||||||
|
disable_notification = h.fetch(:disable_notification, false)
|
||||||
|
|
||||||
|
if !disable_notification
|
||||||
|
NotificationMailer.send_refuse_notification(self).deliver_later
|
||||||
|
NotificationMailer.send_notification_for_tiers(self).deliver_later if self.for_tiers?
|
||||||
|
end
|
||||||
|
|
||||||
|
send_dossier_decision_to_experts(self)
|
||||||
|
remove_titres_identite!
|
||||||
|
end
|
||||||
|
|
||||||
|
def after_refuser_automatiquement
|
||||||
|
# Only SVR can refuse automatically
|
||||||
|
I18n.with_locale(user.locale || I18n.default_locale) do
|
||||||
|
self.motivation = I18n.t("shared.dossiers.motivation.refused_by_svr")
|
||||||
|
end
|
||||||
|
|
||||||
|
self.processed_at = traitements.refuser_automatiquement(motivation:).processed_at
|
||||||
|
self.sva_svr_decision_triggered_at = self.processed_at
|
||||||
|
|
||||||
|
save!
|
||||||
|
|
||||||
|
MailTemplatePresenterService.create_commentaire_for_state(self, Dossier.states.fetch(:refuse))
|
||||||
|
|
||||||
|
log_automatic_dossier_operation(:refuser, self)
|
||||||
|
end
|
||||||
|
|
||||||
|
def after_commit_refuser_automatiquement
|
||||||
|
NotificationMailer.send_refuse_notification(self).deliver_later
|
||||||
|
NotificationMailer.send_notification_for_tiers(self).deliver_later if self.for_tiers?
|
||||||
|
|
||||||
|
send_dossier_decision_to_experts(self)
|
||||||
|
remove_titres_identite!
|
||||||
|
end
|
||||||
|
|
||||||
|
def after_classer_sans_suite(h)
|
||||||
|
instructeur = h[:instructeur]
|
||||||
|
motivation = h[:motivation]
|
||||||
|
justificatif = h[:justificatif]
|
||||||
|
|
||||||
|
self.processed_at = self.traitements
|
||||||
|
.classer_sans_suite(motivation: motivation, instructeur: instructeur)
|
||||||
|
.processed_at
|
||||||
|
save!
|
||||||
|
|
||||||
|
if justificatif
|
||||||
|
self.justificatif_motivation.attach(justificatif)
|
||||||
|
end
|
||||||
|
|
||||||
|
save!
|
||||||
|
|
||||||
|
MailTemplatePresenterService.create_commentaire_for_state(self, Dossier.states.fetch(:sans_suite))
|
||||||
|
|
||||||
|
log_dossier_operation(instructeur, :classer_sans_suite, self)
|
||||||
|
end
|
||||||
|
|
||||||
|
def after_commit_classer_sans_suite(h)
|
||||||
|
disable_notification = h.fetch(:disable_notification, false)
|
||||||
|
|
||||||
|
if !disable_notification
|
||||||
|
NotificationMailer.send_sans_suite_notification(self).deliver_later
|
||||||
|
NotificationMailer.send_notification_for_tiers(self).deliver_later if self.for_tiers?
|
||||||
|
end
|
||||||
|
|
||||||
|
send_dossier_decision_to_experts(self)
|
||||||
|
remove_titres_identite!
|
||||||
|
end
|
||||||
|
|
||||||
|
def after_repasser_en_instruction(h)
|
||||||
|
instructeur = h[:instructeur]
|
||||||
|
|
||||||
|
create_missing_traitemets
|
||||||
|
|
||||||
|
self.hidden_by_user_at = nil
|
||||||
|
self.archived = false
|
||||||
|
self.termine_close_to_expiration_notice_sent_at = nil
|
||||||
|
self.conservation_extension = 0.days
|
||||||
|
self.en_instruction_at = self.traitements
|
||||||
|
.passer_en_instruction(instructeur: instructeur)
|
||||||
|
.processed_at
|
||||||
|
attestation&.destroy
|
||||||
|
|
||||||
|
self.sva_svr_decision_on = nil
|
||||||
|
self.motivation = nil
|
||||||
|
self.justificatif_motivation.purge_later
|
||||||
|
|
||||||
|
save!
|
||||||
|
|
||||||
|
MailTemplatePresenterService.create_commentaire_for_state(self, DossierOperationLog.operations.fetch(:repasser_en_instruction))
|
||||||
|
|
||||||
|
log_dossier_operation(instructeur, :repasser_en_instruction)
|
||||||
|
end
|
||||||
|
|
||||||
|
def after_commit_repasser_en_instruction(h)
|
||||||
|
disable_notification = h.fetch(:disable_notification, false)
|
||||||
|
|
||||||
|
if !disable_notification
|
||||||
|
NotificationMailer.send_repasser_en_instruction_notification(self).deliver_later
|
||||||
|
NotificationMailer.send_notification_for_tiers(self, repasser_en_instruction: true).deliver_later if self.for_tiers?
|
||||||
|
end
|
||||||
|
|
||||||
|
rebase_later
|
||||||
|
end
|
||||||
|
end
|
|
@ -8,6 +8,7 @@ class Dossier < ApplicationRecord
|
||||||
include DossierRebaseConcern
|
include DossierRebaseConcern
|
||||||
include DossierSearchableConcern
|
include DossierSearchableConcern
|
||||||
include DossierSectionsConcern
|
include DossierSectionsConcern
|
||||||
|
include DossierStateConcern
|
||||||
|
|
||||||
enum state: {
|
enum state: {
|
||||||
brouillon: 'brouillon',
|
brouillon: 'brouillon',
|
||||||
|
@ -157,48 +158,48 @@ class Dossier < ApplicationRecord
|
||||||
state :refuse
|
state :refuse
|
||||||
state :sans_suite
|
state :sans_suite
|
||||||
|
|
||||||
event :passer_en_construction, after: :after_passer_en_construction do
|
event :passer_en_construction, after: :after_passer_en_construction, after_commit: :after_commit_passer_en_construction do
|
||||||
transitions from: :brouillon, to: :en_construction
|
transitions from: :brouillon, to: :en_construction
|
||||||
end
|
end
|
||||||
|
|
||||||
event :passer_en_instruction, after: :after_passer_en_instruction do
|
event :passer_en_instruction, after: :after_passer_en_instruction, after_commit: :after_commit_passer_en_instruction do
|
||||||
transitions from: :en_construction, to: :en_instruction, guard: :can_passer_en_instruction?
|
transitions from: :en_construction, to: :en_instruction, guard: :can_passer_en_instruction?
|
||||||
end
|
end
|
||||||
|
|
||||||
event :passer_automatiquement_en_instruction, after: :after_passer_automatiquement_en_instruction do
|
event :passer_automatiquement_en_instruction, after: :after_passer_automatiquement_en_instruction, after_commit: :after_commit_passer_automatiquement_en_instruction do
|
||||||
transitions from: :en_construction, to: :en_instruction, guard: :can_passer_automatiquement_en_instruction?
|
transitions from: :en_construction, to: :en_instruction, guard: :can_passer_automatiquement_en_instruction?
|
||||||
end
|
end
|
||||||
|
|
||||||
event :repasser_en_construction, after: :after_repasser_en_construction do
|
event :repasser_en_construction, after: :after_repasser_en_construction, after_commit: :after_commit_repasser_en_construction do
|
||||||
transitions from: :en_instruction, to: :en_construction, guard: :can_repasser_en_construction?
|
transitions from: :en_instruction, to: :en_construction, guard: :can_repasser_en_construction?
|
||||||
end
|
end
|
||||||
|
|
||||||
event :repasser_en_construction_with_pending_correction, after: :after_repasser_en_construction do
|
event :repasser_en_construction_with_pending_correction, after: :after_repasser_en_construction, after_commit: :after_commit_repasser_en_construction do
|
||||||
transitions from: :en_instruction, to: :en_construction
|
transitions from: :en_instruction, to: :en_construction
|
||||||
end
|
end
|
||||||
|
|
||||||
event :accepter, after: :after_accepter do
|
event :accepter, after: :after_accepter, after_commit: :after_commit_accepter do
|
||||||
transitions from: :en_instruction, to: :accepte, guard: :can_terminer?
|
transitions from: :en_instruction, to: :accepte, guard: :can_terminer?
|
||||||
end
|
end
|
||||||
|
|
||||||
event :accepter_automatiquement, after: :after_accepter_automatiquement do
|
event :accepter_automatiquement, after: :after_accepter_automatiquement, after_commit: :after_commit_accepter_automatiquement do
|
||||||
transitions from: :en_construction, to: :accepte, guard: :can_accepter_automatiquement?
|
transitions from: :en_construction, to: :accepte, guard: :can_accepter_automatiquement?
|
||||||
transitions from: :en_instruction, to: :accepte, guard: :can_accepter_automatiquement?
|
transitions from: :en_instruction, to: :accepte, guard: :can_accepter_automatiquement?
|
||||||
end
|
end
|
||||||
|
|
||||||
event :refuser, after: :after_refuser do
|
event :refuser, after: :after_refuser, after_commit: :after_commit_refuser do
|
||||||
transitions from: :en_instruction, to: :refuse, guard: :can_terminer?
|
transitions from: :en_instruction, to: :refuse, guard: :can_terminer?
|
||||||
end
|
end
|
||||||
|
|
||||||
event :refuser_automatiquement, after: :after_refuser_automatiquement do
|
event :refuser_automatiquement, after: :after_refuser_automatiquement, after_commit: :after_commit_refuser_automatiquement do
|
||||||
transitions from: :en_instruction, to: :refuse, guard: :can_refuser_automatiquement?
|
transitions from: :en_instruction, to: :refuse, guard: :can_refuser_automatiquement?
|
||||||
end
|
end
|
||||||
|
|
||||||
event :classer_sans_suite, after: :after_classer_sans_suite do
|
event :classer_sans_suite, after: :after_classer_sans_suite, after_commit: :after_commit_classer_sans_suite do
|
||||||
transitions from: :en_instruction, to: :sans_suite, guard: :can_terminer?
|
transitions from: :en_instruction, to: :sans_suite, guard: :can_terminer?
|
||||||
end
|
end
|
||||||
|
|
||||||
event :repasser_en_instruction, after: :after_repasser_en_instruction do
|
event :repasser_en_instruction, after: :after_repasser_en_instruction, after_commit: :after_commit_repasser_en_instruction do
|
||||||
transitions from: :refuse, to: :en_instruction, guard: :can_repasser_en_instruction?
|
transitions from: :refuse, to: :en_instruction, guard: :can_repasser_en_instruction?
|
||||||
transitions from: :sans_suite, to: :en_instruction, guard: :can_repasser_en_instruction?
|
transitions from: :sans_suite, to: :en_instruction, guard: :can_repasser_en_instruction?
|
||||||
transitions from: :accepte, to: :en_instruction, guard: :can_repasser_en_instruction?
|
transitions from: :accepte, to: :en_instruction, guard: :can_repasser_en_instruction?
|
||||||
|
@ -883,19 +884,6 @@ class Dossier < ApplicationRecord
|
||||||
procedure.email_template_for(state)
|
procedure.email_template_for(state)
|
||||||
end
|
end
|
||||||
|
|
||||||
def after_passer_en_construction
|
|
||||||
self.conservation_extension = 0.days
|
|
||||||
self.depose_at = self.en_construction_at = self.traitements
|
|
||||||
.passer_en_construction
|
|
||||||
.processed_at
|
|
||||||
save!
|
|
||||||
RoutingEngine.compute(self)
|
|
||||||
MailTemplatePresenterService.create_commentaire_for_state(self, Dossier.states.fetch(:en_construction))
|
|
||||||
NotificationMailer.send_en_construction_notification(self).deliver_later
|
|
||||||
NotificationMailer.send_notification_for_tiers(self).deliver_later if self.for_tiers?
|
|
||||||
procedure.compute_dossiers_count
|
|
||||||
end
|
|
||||||
|
|
||||||
def submit_en_construction!
|
def submit_en_construction!
|
||||||
self.traitements.submit_en_construction
|
self.traitements.submit_en_construction
|
||||||
save!
|
save!
|
||||||
|
@ -906,224 +894,6 @@ class Dossier < ApplicationRecord
|
||||||
process_sva_svr!
|
process_sva_svr!
|
||||||
end
|
end
|
||||||
|
|
||||||
def after_passer_en_instruction(h)
|
|
||||||
instructeur = h[:instructeur]
|
|
||||||
disable_notification = h.fetch(:disable_notification, false)
|
|
||||||
|
|
||||||
instructeur.follow(self)
|
|
||||||
|
|
||||||
self.en_construction_close_to_expiration_notice_sent_at = nil
|
|
||||||
self.conservation_extension = 0.days
|
|
||||||
self.en_instruction_at = self.traitements
|
|
||||||
.passer_en_instruction(instructeur: instructeur)
|
|
||||||
.processed_at
|
|
||||||
save!
|
|
||||||
|
|
||||||
resolve_pending_correction!
|
|
||||||
|
|
||||||
MailTemplatePresenterService.create_commentaire_for_state(self, Dossier.states.fetch(:en_instruction))
|
|
||||||
if !disable_notification
|
|
||||||
NotificationMailer.send_en_instruction_notification(self).deliver_later
|
|
||||||
NotificationMailer.send_notification_for_tiers(self).deliver_later if self.for_tiers?
|
|
||||||
end
|
|
||||||
log_dossier_operation(instructeur, :passer_en_instruction)
|
|
||||||
end
|
|
||||||
|
|
||||||
def after_passer_automatiquement_en_instruction
|
|
||||||
self.en_construction_close_to_expiration_notice_sent_at = nil
|
|
||||||
self.conservation_extension = 0.days
|
|
||||||
self.en_instruction_at = traitements.passer_en_instruction.processed_at
|
|
||||||
|
|
||||||
if procedure.declarative_en_instruction?
|
|
||||||
self.declarative_triggered_at = en_instruction_at
|
|
||||||
end
|
|
||||||
|
|
||||||
save!
|
|
||||||
MailTemplatePresenterService.create_commentaire_for_state(self, Dossier.states.fetch(:en_instruction))
|
|
||||||
NotificationMailer.send_en_instruction_notification(self).deliver_later
|
|
||||||
NotificationMailer.send_notification_for_tiers(self).deliver_later if self.for_tiers?
|
|
||||||
|
|
||||||
if procedure.sva_svr_enabled?
|
|
||||||
# TODO: handle serialization errors when SIRET demandeur was not completed
|
|
||||||
log_automatic_dossier_operation(:passer_en_instruction, self)
|
|
||||||
else
|
|
||||||
log_automatic_dossier_operation(:passer_en_instruction)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def after_repasser_en_construction(h)
|
|
||||||
instructeur = h[:instructeur]
|
|
||||||
|
|
||||||
create_missing_traitemets
|
|
||||||
|
|
||||||
self.en_construction_close_to_expiration_notice_sent_at = nil
|
|
||||||
self.conservation_extension = 0.days
|
|
||||||
self.en_construction_at = self.traitements
|
|
||||||
.passer_en_construction(instructeur: instructeur)
|
|
||||||
.processed_at
|
|
||||||
save!
|
|
||||||
log_dossier_operation(instructeur, :repasser_en_construction)
|
|
||||||
end
|
|
||||||
|
|
||||||
def after_repasser_en_instruction(h)
|
|
||||||
instructeur = h[:instructeur]
|
|
||||||
disable_notification = h.fetch(:disable_notification, false)
|
|
||||||
|
|
||||||
create_missing_traitemets
|
|
||||||
|
|
||||||
self.hidden_by_user_at = nil
|
|
||||||
self.archived = false
|
|
||||||
self.termine_close_to_expiration_notice_sent_at = nil
|
|
||||||
self.conservation_extension = 0.days
|
|
||||||
self.en_instruction_at = self.traitements
|
|
||||||
.passer_en_instruction(instructeur: instructeur)
|
|
||||||
.processed_at
|
|
||||||
attestation&.destroy
|
|
||||||
|
|
||||||
self.sva_svr_decision_on = nil
|
|
||||||
self.motivation = nil
|
|
||||||
self.justificatif_motivation.purge_later
|
|
||||||
|
|
||||||
save!
|
|
||||||
rebase_later
|
|
||||||
|
|
||||||
MailTemplatePresenterService.create_commentaire_for_state(self, DossierOperationLog.operations.fetch(:repasser_en_instruction))
|
|
||||||
if !disable_notification
|
|
||||||
NotificationMailer.send_repasser_en_instruction_notification(self).deliver_later
|
|
||||||
NotificationMailer.send_notification_for_tiers(self, repasser_en_instruction: true).deliver_later if self.for_tiers?
|
|
||||||
end
|
|
||||||
log_dossier_operation(instructeur, :repasser_en_instruction)
|
|
||||||
end
|
|
||||||
|
|
||||||
def after_accepter(h)
|
|
||||||
instructeur = h[:instructeur]
|
|
||||||
motivation = h[:motivation]
|
|
||||||
justificatif = h[:justificatif]
|
|
||||||
disable_notification = h.fetch(:disable_notification, false)
|
|
||||||
|
|
||||||
self.processed_at = self.traitements
|
|
||||||
.accepter(motivation: motivation, instructeur: instructeur)
|
|
||||||
.processed_at
|
|
||||||
save!
|
|
||||||
|
|
||||||
if justificatif
|
|
||||||
self.justificatif_motivation.attach(justificatif)
|
|
||||||
end
|
|
||||||
|
|
||||||
if attestation.nil?
|
|
||||||
self.attestation = build_attestation
|
|
||||||
end
|
|
||||||
|
|
||||||
save!
|
|
||||||
remove_titres_identite!
|
|
||||||
|
|
||||||
MailTemplatePresenterService.create_commentaire_for_state(self, Dossier.states.fetch(:accepte))
|
|
||||||
if !disable_notification
|
|
||||||
NotificationMailer.send_accepte_notification(self).deliver_later
|
|
||||||
NotificationMailer.send_notification_for_tiers(self).deliver_later if self.for_tiers?
|
|
||||||
end
|
|
||||||
send_dossier_decision_to_experts(self)
|
|
||||||
log_dossier_operation(instructeur, :accepter, self)
|
|
||||||
end
|
|
||||||
|
|
||||||
def after_accepter_automatiquement
|
|
||||||
self.processed_at = traitements.accepter_automatiquement.processed_at
|
|
||||||
|
|
||||||
if procedure.declarative_accepte?
|
|
||||||
self.en_instruction_at = self.processed_at
|
|
||||||
self.declarative_triggered_at = self.processed_at
|
|
||||||
elsif procedure.sva?
|
|
||||||
self.sva_svr_decision_triggered_at = self.processed_at
|
|
||||||
end
|
|
||||||
|
|
||||||
save!
|
|
||||||
|
|
||||||
if attestation.nil?
|
|
||||||
self.attestation = build_attestation
|
|
||||||
end
|
|
||||||
|
|
||||||
save!
|
|
||||||
remove_titres_identite!
|
|
||||||
MailTemplatePresenterService.create_commentaire_for_state(self, Dossier.states.fetch(:accepte))
|
|
||||||
NotificationMailer.send_accepte_notification(self).deliver_later
|
|
||||||
NotificationMailer.send_notification_for_tiers(self).deliver_later if self.for_tiers?
|
|
||||||
log_automatic_dossier_operation(:accepter, self)
|
|
||||||
end
|
|
||||||
|
|
||||||
def after_refuser(h)
|
|
||||||
instructeur = h[:instructeur]
|
|
||||||
motivation = h[:motivation]
|
|
||||||
justificatif = h[:justificatif]
|
|
||||||
disable_notification = h.fetch(:disable_notification, false)
|
|
||||||
|
|
||||||
self.processed_at = self.traitements
|
|
||||||
.refuser(motivation: motivation, instructeur: instructeur)
|
|
||||||
.processed_at
|
|
||||||
save!
|
|
||||||
|
|
||||||
if justificatif
|
|
||||||
self.justificatif_motivation.attach(justificatif)
|
|
||||||
end
|
|
||||||
|
|
||||||
save!
|
|
||||||
remove_titres_identite!
|
|
||||||
|
|
||||||
MailTemplatePresenterService.create_commentaire_for_state(self, Dossier.states.fetch(:refuse))
|
|
||||||
|
|
||||||
if !disable_notification
|
|
||||||
NotificationMailer.send_refuse_notification(self).deliver_later
|
|
||||||
NotificationMailer.send_notification_for_tiers(self).deliver_later if self.for_tiers?
|
|
||||||
end
|
|
||||||
send_dossier_decision_to_experts(self)
|
|
||||||
log_dossier_operation(instructeur, :refuser, self)
|
|
||||||
end
|
|
||||||
|
|
||||||
def after_refuser_automatiquement
|
|
||||||
# Only SVR can refuse automatically
|
|
||||||
I18n.with_locale(user.locale || I18n.default_locale) do
|
|
||||||
self.motivation = I18n.t("shared.dossiers.motivation.refused_by_svr")
|
|
||||||
end
|
|
||||||
|
|
||||||
self.processed_at = traitements.refuser_automatiquement(motivation:).processed_at
|
|
||||||
self.sva_svr_decision_triggered_at = self.processed_at
|
|
||||||
|
|
||||||
save!
|
|
||||||
|
|
||||||
remove_titres_identite!
|
|
||||||
MailTemplatePresenterService.create_commentaire_for_state(self, Dossier.states.fetch(:refuse))
|
|
||||||
NotificationMailer.send_refuse_notification(self).deliver_later
|
|
||||||
NotificationMailer.send_notification_for_tiers(self).deliver_later if self.for_tiers?
|
|
||||||
log_automatic_dossier_operation(:refuser, self)
|
|
||||||
end
|
|
||||||
|
|
||||||
def after_classer_sans_suite(h)
|
|
||||||
instructeur = h[:instructeur]
|
|
||||||
motivation = h[:motivation]
|
|
||||||
justificatif = h[:justificatif]
|
|
||||||
disable_notification = h.fetch(:disable_notification, false)
|
|
||||||
|
|
||||||
self.processed_at = self.traitements
|
|
||||||
.classer_sans_suite(motivation: motivation, instructeur: instructeur)
|
|
||||||
.processed_at
|
|
||||||
save!
|
|
||||||
|
|
||||||
if justificatif
|
|
||||||
self.justificatif_motivation.attach(justificatif)
|
|
||||||
end
|
|
||||||
|
|
||||||
save!
|
|
||||||
remove_titres_identite!
|
|
||||||
|
|
||||||
MailTemplatePresenterService.create_commentaire_for_state(self, Dossier.states.fetch(:sans_suite))
|
|
||||||
|
|
||||||
if !disable_notification
|
|
||||||
NotificationMailer.send_sans_suite_notification(self).deliver_later
|
|
||||||
NotificationMailer.send_notification_for_tiers(self).deliver_later if self.for_tiers?
|
|
||||||
end
|
|
||||||
send_dossier_decision_to_experts(self)
|
|
||||||
log_dossier_operation(instructeur, :classer_sans_suite, self)
|
|
||||||
end
|
|
||||||
|
|
||||||
def process_declarative!
|
def process_declarative!
|
||||||
if procedure.declarative_accepte? && may_accepter_automatiquement?
|
if procedure.declarative_accepte? && may_accepter_automatiquement?
|
||||||
accepter_automatiquement!
|
accepter_automatiquement!
|
||||||
|
|
Loading…
Reference in a new issue