modify groupe instructeur controller

This commit is contained in:
kara Diaby 2021-07-26 16:06:09 +02:00
parent ab0782530c
commit 69393c2921
3 changed files with 25 additions and 3 deletions

View file

@ -74,9 +74,19 @@ module NewAdministrateur
.without_group(@groupe_instructeur)
end
def reaffecter_bulk_messages(target_group)
bulk_messages = BulkMessage.joins(:groupe_instructeurs).where(groupe_instructeurs: { id: groupe_instructeur.id })
bulk_messages.each do |bulk_message|
bulk_message.groupe_instructeurs.delete(groupe_instructeur)
if !bulk_message.groupe_instructeur_ids.include?(target_group.id)
bulk_message.groupe_instructeurs << target_group
end
end
end
def reaffecter
target_group = procedure.groupe_instructeurs.find(params[:target_group])
reaffecter_bulk_messages(target_group)
groupe_instructeur.dossiers.with_discarded.find_each do |dossier|
dossier.assign_to_groupe_instructeur(target_group, current_administrateur)
end

View file

@ -8,5 +8,10 @@
%p.mb-2 Messages envoyés aux usagers :
- @bulk_messages.each do |bulk_message|
%li.mb-1 #{bulk_message.instructeur.email} a envoyé un message le #{bulk_message.sent_at.strftime('%d-%m-%Y')} à #{bulk_message.dossier_count} usagers, #{bulk_message.piece_jointe.blob.present? ? "avec" : "sans"} pièce jointe
%p.notice.mb-2.mt-4 Vous allez envoyer un message à #{pluralize(@dossiers_count, 'personne')} dans les groupes instructeurs : #{@groupe_instructeurs.join(', ')}.
= render partial: 'shared/dossiers/messages/form', locals: { commentaire: @commentaire, form_url: create_multiple_commentaire_instructeur_procedure_path(@procedure) }
- if @email_usagers_dossiers.present?
%p.notice.mb-2.mt-4 Vous allez envoyer un message à #{pluralize(@dossiers_count, 'personne')} dans les groupes instructeurs : #{@groupe_instructeurs.join(', ')}.
= render partial: 'shared/dossiers/messages/form', locals: { commentaire: @commentaire, form_url: create_multiple_commentaire_instructeur_procedure_path(@procedure) }
- else
.page-title.center
%h2 Il n'y a aucun dossier en brouillon dans vos groupes instructeurs

View file

@ -137,12 +137,15 @@ describe NewAdministrateur::GroupeInstructeursController, type: :controller do
describe '#reaffecter' do
let!(:gi_1_2) { procedure.groupe_instructeurs.create(label: 'groupe instructeur 2') }
let!(:gi_1_3) { procedure.groupe_instructeurs.create(label: 'groupe instructeur 3') }
let!(:dossier12) { create(:dossier, :en_construction, :with_individual, procedure: procedure, groupe_instructeur: gi_1_1) }
let!(:dossier_discarded) do
dossier = create(:dossier, :en_construction, :with_individual, procedure: procedure, groupe_instructeur: gi_1_1)
dossier.discard!
dossier
end
let!(:instructeur) { create(:instructeur) }
let!(:bulk_message) { BulkMessage.create(dossier_count: 2, dossier_state: "brouillon", body: "hello", sent_at: Time.zone.now, groupe_instructeurs: [gi_1_1, gi_1_3], instructeur: instructeur) }
describe 'when the new group is a group of the procedure' do
before do
@ -153,6 +156,7 @@ describe NewAdministrateur::GroupeInstructeursController, type: :controller do
target_group: gi_1_2.id
}
dossier12.reload
bulk_message.reload
end
it { expect(response).to redirect_to(admin_procedure_groupe_instructeurs_path(procedure)) }
@ -160,6 +164,7 @@ describe NewAdministrateur::GroupeInstructeursController, type: :controller do
it { expect(gi_1_2.dossiers.with_discarded.count).to be(2) }
it { expect(gi_1_2.dossiers.last.id).to be(dossier12.id) }
it { expect(dossier12.groupe_instructeur.id).to be(gi_1_2.id) }
it { expect(bulk_message.groupe_instructeurs).to eq([gi_1_2, gi_1_3]) }
end
describe 'when the target group is not a possible group' do
@ -174,9 +179,11 @@ describe NewAdministrateur::GroupeInstructeursController, type: :controller do
}
before do
dossier12.reload
bulk_message.reload
end
it { expect { subject }.to raise_error(ActiveRecord::RecordNotFound) }
it { expect(bulk_message.groupe_instructeurs).to eq([gi_1_1, gi_1_3]) }
end
end