Merge pull request #8817 from mfo/US/fix-expert-export
correctif(export.pdf): ETQ expert, lorsque j'exporte un dossier au format PDF, celui ci contenient les avis non confidentiels ainsi que mes avis
This commit is contained in:
commit
8efd191e0f
8 changed files with 41 additions and 6 deletions
|
@ -148,7 +148,7 @@ module Experts
|
|||
end
|
||||
|
||||
def telecharger_pjs
|
||||
files = ActiveStorage::DownloadableFile.create_list_from_dossiers(Dossier.where(id: @dossier.id))
|
||||
files = ActiveStorage::DownloadableFile.create_list_from_dossiers(Dossier.where(id: @dossier.id), include_avis_for_expert: current_expert)
|
||||
cleaned_files = ActiveStorage::DownloadableFile.cleanup_list_from_dossier(files)
|
||||
|
||||
zipline(cleaned_files, "dossier-#{@dossier.id}.zip")
|
||||
|
|
|
@ -1,6 +1,12 @@
|
|||
class ActiveStorage::DownloadableFile
|
||||
def self.create_list_from_dossiers(dossiers, with_bills: false, with_champs_private: false, include_infos_administration: false)
|
||||
PiecesJustificativesService.generate_dossier_export(dossiers, include_infos_administration:) +
|
||||
def self.create_list_from_dossiers(
|
||||
dossiers,
|
||||
with_bills: false,
|
||||
with_champs_private: false,
|
||||
include_infos_administration: false,
|
||||
include_avis_for_expert: false
|
||||
)
|
||||
PiecesJustificativesService.generate_dossier_export(dossiers, include_infos_administration:, include_avis_for_expert:) +
|
||||
PiecesJustificativesService.liste_documents(dossiers, with_bills:, with_champs_private:)
|
||||
end
|
||||
|
||||
|
|
|
@ -83,7 +83,7 @@ class PiecesJustificativesService
|
|||
end
|
||||
end
|
||||
|
||||
def self.generate_dossier_export(dossiers, include_infos_administration: false)
|
||||
def self.generate_dossier_export(dossiers, include_infos_administration: false, include_avis_for_expert: false)
|
||||
return [] if dossiers.empty?
|
||||
|
||||
pdfs = []
|
||||
|
@ -98,6 +98,7 @@ class PiecesJustificativesService
|
|||
.render(template: 'dossiers/show', formats: [:pdf],
|
||||
assigns: {
|
||||
include_infos_administration:,
|
||||
include_avis_for_expert:,
|
||||
dossier: dossier
|
||||
})
|
||||
|
||||
|
|
|
@ -287,6 +287,13 @@ prawn_document(page_size: "A4") do |pdf|
|
|||
end
|
||||
end
|
||||
|
||||
if @include_avis_for_expert && @dossier.avis.present?
|
||||
add_title(pdf, "Avis")
|
||||
@dossier.avis_for_expert(@include_avis_for_expert).each do |avis|
|
||||
add_avis(pdf, avis)
|
||||
end
|
||||
end
|
||||
|
||||
if @dossier.commentaires.present?
|
||||
add_title(pdf, 'Messagerie')
|
||||
@dossier.commentaires.each do |commentaire|
|
||||
|
|
|
@ -97,7 +97,7 @@ describe Experts::AvisController, type: :controller do
|
|||
subject { get :telecharger_pjs, params: { id: avis.id, procedure_id: } }
|
||||
|
||||
before do
|
||||
allow(PiecesJustificativesService).to receive(:generate_dossier_export).and_return([]).with([dossier], include_infos_administration: false)
|
||||
allow(PiecesJustificativesService).to receive(:generate_dossier_export).and_return([]).with([dossier], include_infos_administration: false, include_avis_for_expert: expert)
|
||||
end
|
||||
|
||||
context 'with a valid avis' do
|
||||
|
|
|
@ -873,7 +873,7 @@ describe Instructeurs::DossiersController, type: :controller do
|
|||
end
|
||||
|
||||
before do
|
||||
allow(PiecesJustificativesService).to receive(:generate_dossier_export).with([dossier], include_infos_administration: true).and_call_original
|
||||
allow(PiecesJustificativesService).to receive(:generate_dossier_export).with([dossier], include_infos_administration: true, include_avis_for_expert: false).and_call_original
|
||||
end
|
||||
|
||||
it 'includes an attachment' do
|
||||
|
|
|
@ -13,6 +13,14 @@ FactoryBot.define do
|
|||
avis.experts_procedure ||= build(:experts_procedure, procedure: avis.dossier.procedure)
|
||||
end
|
||||
|
||||
trait :confidentiel do
|
||||
confidentiel { true }
|
||||
end
|
||||
|
||||
trait :not_confidentiel do
|
||||
confidentiel { false }
|
||||
end
|
||||
|
||||
trait :with_instructeur do
|
||||
email { nil }
|
||||
instructeur { association :instructeur, email: generate(:expert_email) }
|
||||
|
|
|
@ -210,6 +210,19 @@ describe PiecesJustificativesService do
|
|||
it "doesn't update dossier" do
|
||||
expect { subject }.not_to change { dossier.updated_at }
|
||||
end
|
||||
|
||||
context 'when given an expert' do
|
||||
let!(:expert) { create(:expert) }
|
||||
let!(:confidentiel_avis) { create(:avis, :confidentiel, dossier: dossier) }
|
||||
let!(:not_confidentiel_avis) { create(:avis, :not_confidentiel, dossier: dossier) }
|
||||
let!(:expert_avis) { create(:avis, :confidentiel, dossier: dossier, expert: expert) }
|
||||
|
||||
subject { PiecesJustificativesService.generate_dossier_export(Dossier.where(id: dossier.id), include_avis_for_expert: expert) }
|
||||
it "includes avis not confidentiel as well as expert's avis" do
|
||||
expect_any_instance_of(Dossier).to receive(:avis_for_expert).with(expert).and_return([])
|
||||
subject
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def attach_file_to_champ(champ, safe = true)
|
||||
|
|
Loading…
Reference in a new issue