diff --git a/app/models/export_template.rb b/app/models/export_template.rb index f5ed164b9..3a9bf9c5c 100644 --- a/app/models/export_template.rb +++ b/app/models/export_template.rb @@ -48,7 +48,7 @@ class ExportTemplate < ApplicationRecord def attachment_and_path(dossier, attachment, index: 0, row_index: nil, champ: nil) [ attachment, - path(dossier, attachment, index, row_index, champ) + path(dossier, attachment, index:, row_index:, champ:) ] end @@ -116,7 +116,7 @@ class ExportTemplate < ApplicationRecord "#{render_attributes_for(content["pdf_name"], dossier)}.pdf" end - def path(dossier, attachment, index, row_index, champ) + def path(dossier, attachment, index: 0, row_index: nil, champ: nil) if attachment.name == 'pdf_export_for_instructeur' return export_path(dossier) end diff --git a/app/services/pieces_justificatives_service.rb b/app/services/pieces_justificatives_service.rb index 0fdbc2be9..8f95adc44 100644 --- a/app/services/pieces_justificatives_service.rb +++ b/app/services/pieces_justificatives_service.rb @@ -169,7 +169,12 @@ class PiecesJustificativesService .filter { |a| safe_attachment(a) } .map do |a| dossier_id = commentaire_id_dossier_id[a.record_id] - ActiveStorage::DownloadableFile.pj_and_path(dossier_id, a) + if @export_template + dossier = dossiers.find { _1.id == dossier_id } + @export_template.attachment_and_path(dossier, a) + else + ActiveStorage::DownloadableFile.pj_and_path(dossier_id, a) + end end end diff --git a/spec/factories/export_template.rb b/spec/factories/export_template.rb index 54ce224e5..d62754115 100644 --- a/spec/factories/export_template.rb +++ b/spec/factories/export_template.rb @@ -42,5 +42,27 @@ FactoryBot.define do export_template.save end end + + trait :with_custom_ddd_prefix do + transient do + ddd_prefix { 'dossier_' } + end + + to_create do |export_template, context| + export_template.set_default_values + export_template.content["default_dossier_directory"]["content"] = [ + { + "type" => "paragraph", + "content" => + [ + { "text" => context.ddd_prefix, "type" => "text" }, + { "type" => "mention", "attrs" => { "id" => "dossier_number", "label" => "numéro du dossier" } }, + { "text" => " ", "type" => "text" } + ] + } + ] + export_template.save + end + end end end diff --git a/spec/services/pieces_justificatives_service_spec.rb b/spec/services/pieces_justificatives_service_spec.rb index bdfe28911..9d6e69fd1 100644 --- a/spec/services/pieces_justificatives_service_spec.rb +++ b/spec/services/pieces_justificatives_service_spec.rb @@ -164,6 +164,13 @@ describe PiecesJustificativesService do end it { expect(subject).to match_array(dossier.commentaires.first.piece_jointe.attachments) } + + context 'with export_template' do + let(:export_template) { create(:export_template, :with_custom_ddd_prefix, ddd_prefix: "DOSSIER-", groupe_instructeur: procedure.defaut_groupe_instructeur) } + it 'uses specific name for dossier directory' do + expect(PiecesJustificativesService.new(user_profile:, export_template:).liste_documents(dossiers).map(&:second)[0].starts_with?("DOSSIER-#{dossier.id}/messagerie")).to be true + end + end end context 'with a pj not safe on a commentaire' do