tech(refactor): extract clone logic inside its own class
This commit is contained in:
parent
72a3f6e89c
commit
3e64a3bbbc
7 changed files with 34 additions and 33 deletions
|
@ -92,7 +92,7 @@ class AttestationTemplate < ApplicationRecord
|
||||||
|
|
||||||
def dup
|
def dup
|
||||||
attestation_template = AttestationTemplate.new(title: title, body: body, footer: footer, activated: activated)
|
attestation_template = AttestationTemplate.new(title: title, body: body, footer: footer, activated: activated)
|
||||||
PiecesJustificativesService.clone_attachments(self, attestation_template)
|
ClonePiecesJustificativesService.clone_attachments(self, attestation_template)
|
||||||
attestation_template
|
attestation_template
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -238,7 +238,7 @@ class Champ < ApplicationRecord
|
||||||
relationships = fork || !private? ? [:etablissement, :geo_areas] : []
|
relationships = fork || !private? ? [:etablissement, :geo_areas] : []
|
||||||
|
|
||||||
deep_clone(only: champ_attributes + value_attributes, include: relationships, validate: !fork) do |original, kopy|
|
deep_clone(only: champ_attributes + value_attributes, include: relationships, validate: !fork) do |original, kopy|
|
||||||
PiecesJustificativesService.clone_attachments(original, kopy)
|
ClonePiecesJustificativesService.clone_attachments(original, kopy)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -85,7 +85,7 @@ module DossierCloneConcern
|
||||||
.transform_values { [_1, _1.clone(fork)] }
|
.transform_values { [_1, _1.clone(fork)] }
|
||||||
|
|
||||||
cloned_dossier = deep_clone(only: dossier_attributes, include: relationships) do |original, kopy|
|
cloned_dossier = deep_clone(only: dossier_attributes, include: relationships) do |original, kopy|
|
||||||
PiecesJustificativesService.clone_attachments(original, kopy)
|
ClonePiecesJustificativesService.clone_attachments(original, kopy)
|
||||||
|
|
||||||
if original.is_a?(Dossier)
|
if original.is_a?(Dossier)
|
||||||
if fork
|
if fork
|
||||||
|
|
|
@ -497,7 +497,7 @@ class Procedure < ApplicationRecord
|
||||||
}
|
}
|
||||||
include_list[:groupe_instructeurs] = [:instructeurs, :contact_information] if !is_different_admin
|
include_list[:groupe_instructeurs] = [:instructeurs, :contact_information] if !is_different_admin
|
||||||
procedure = self.deep_clone(include: include_list) do |original, kopy|
|
procedure = self.deep_clone(include: include_list) do |original, kopy|
|
||||||
PiecesJustificativesService.clone_attachments(original, kopy)
|
ClonePiecesJustificativesService.clone_attachments(original, kopy)
|
||||||
end
|
end
|
||||||
procedure.path = SecureRandom.uuid
|
procedure.path = SecureRandom.uuid
|
||||||
procedure.aasm_state = :brouillon
|
procedure.aasm_state = :brouillon
|
||||||
|
|
|
@ -414,7 +414,7 @@ class ProcedureRevision < ApplicationRecord
|
||||||
|
|
||||||
def replace_type_de_champ_by_clone(coordinate)
|
def replace_type_de_champ_by_clone(coordinate)
|
||||||
cloned_type_de_champ = coordinate.type_de_champ.deep_clone do |original, kopy|
|
cloned_type_de_champ = coordinate.type_de_champ.deep_clone do |original, kopy|
|
||||||
PiecesJustificativesService.clone_attachments(original, kopy)
|
ClonePiecesJustificativesService.clone_attachments(original, kopy)
|
||||||
end
|
end
|
||||||
coordinate.update!(type_de_champ: cloned_type_de_champ)
|
coordinate.update!(type_de_champ: cloned_type_de_champ)
|
||||||
cloned_type_de_champ
|
cloned_type_de_champ
|
||||||
|
|
29
app/services/clone_pieces_justificatives_service.rb
Normal file
29
app/services/clone_pieces_justificatives_service.rb
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
class ClonePiecesJustificativesService
|
||||||
|
def self.clone_attachments(original, kopy)
|
||||||
|
case original
|
||||||
|
when Champs::PieceJustificativeChamp, Champs::TitreIdentiteChamp
|
||||||
|
original.piece_justificative_file.attachments.each do |attachment|
|
||||||
|
kopy.piece_justificative_file.attach(attachment.blob)
|
||||||
|
end
|
||||||
|
when TypeDeChamp
|
||||||
|
clone_attachment(original, kopy, :piece_justificative_template)
|
||||||
|
when Procedure
|
||||||
|
clone_attachment(original, kopy, :logo)
|
||||||
|
clone_attachment(original, kopy, :notice)
|
||||||
|
clone_attachment(original, kopy, :deliberation)
|
||||||
|
when AttestationTemplate
|
||||||
|
clone_attachment(original, kopy, :logo)
|
||||||
|
clone_attachment(original, kopy, :signature)
|
||||||
|
when Etablissement
|
||||||
|
clone_attachment(original, kopy, :entreprise_attestation_sociale)
|
||||||
|
clone_attachment(original, kopy, :entreprise_attestation_fiscale)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.clone_attachment(original, kopy, attachment_name)
|
||||||
|
attachment = original.public_send(attachment_name)
|
||||||
|
if attachment.attached?
|
||||||
|
kopy.public_send(attachment_name).attach(attachment.blob)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -59,34 +59,6 @@ class PiecesJustificativesService
|
||||||
end.flatten
|
end.flatten
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.clone_attachments(original, kopy)
|
|
||||||
case original
|
|
||||||
when Champs::PieceJustificativeChamp, Champs::TitreIdentiteChamp
|
|
||||||
original.piece_justificative_file.attachments.each do |attachment|
|
|
||||||
kopy.piece_justificative_file.attach(attachment.blob)
|
|
||||||
end
|
|
||||||
when TypeDeChamp
|
|
||||||
clone_attachment(original, kopy, :piece_justificative_template)
|
|
||||||
when Procedure
|
|
||||||
clone_attachment(original, kopy, :logo)
|
|
||||||
clone_attachment(original, kopy, :notice)
|
|
||||||
clone_attachment(original, kopy, :deliberation)
|
|
||||||
when AttestationTemplate
|
|
||||||
clone_attachment(original, kopy, :logo)
|
|
||||||
clone_attachment(original, kopy, :signature)
|
|
||||||
when Etablissement
|
|
||||||
clone_attachment(original, kopy, :entreprise_attestation_sociale)
|
|
||||||
clone_attachment(original, kopy, :entreprise_attestation_fiscale)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.clone_attachment(original, kopy, attachment_name)
|
|
||||||
attachment = original.public_send(attachment_name)
|
|
||||||
if attachment.attached?
|
|
||||||
kopy.public_send(attachment_name).attach(attachment.blob)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.generate_dossier_export(dossiers, include_infos_administration: false, include_avis_for_expert: false)
|
def self.generate_dossier_export(dossiers, include_infos_administration: false, include_avis_for_expert: false)
|
||||||
return [] if dossiers.empty?
|
return [] if dossiers.empty?
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue