Merge pull request #6169 from betagouv/fix_duplicate_dossier
Instructeur : corrige une duplication des dossiers dans le tableau d'une démarche (#6169)
This commit is contained in:
commit
b7faed96a3
4 changed files with 7 additions and 4 deletions
|
@ -121,6 +121,7 @@ class ProcedurePresentation < ApplicationRecord
|
||||||
.joins('LEFT OUTER JOIN users instructeurs_users ON instructeurs_users.instructeur_id = instructeurs.id')
|
.joins('LEFT OUTER JOIN users instructeurs_users ON instructeurs_users.instructeur_id = instructeurs.id')
|
||||||
.order("instructeurs_users.email #{order}")
|
.order("instructeurs_users.email #{order}")
|
||||||
.pluck(:id)
|
.pluck(:id)
|
||||||
|
.uniq
|
||||||
when 'self', 'user', 'individual', 'etablissement', 'groupe_instructeur'
|
when 'self', 'user', 'individual', 'etablissement', 'groupe_instructeur'
|
||||||
(table == 'self' ? dossiers : dossiers.includes(table))
|
(table == 'self' ? dossiers : dossiers.includes(table))
|
||||||
.order("#{self.class.sanitized_column(table, column)} #{order}")
|
.order("#{self.class.sanitized_column(table, column)} #{order}")
|
||||||
|
|
|
@ -81,7 +81,7 @@ class DossierProjectionService
|
||||||
.where(dossier_id: dossiers_ids)
|
.where(dossier_id: dossiers_ids)
|
||||||
.pluck('dossier_id, users.email')
|
.pluck('dossier_id, users.email')
|
||||||
.group_by { |dossier_id, _| dossier_id }
|
.group_by { |dossier_id, _| dossier_id }
|
||||||
.to_h { |dossier_id, dossier_id_emails| [dossier_id, dossier_id_emails.map { |_, email| email }&.join(', ')] }
|
.to_h { |dossier_id, dossier_id_emails| [dossier_id, dossier_id_emails.sort.map { |_, email| email }&.join(', ')] }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -273,6 +273,7 @@ describe ProcedurePresentation do
|
||||||
|
|
||||||
before do
|
before do
|
||||||
create(:follow, dossier: dossier_a, instructeur: create(:instructeur, email: 'abaca@exemple.fr'))
|
create(:follow, dossier: dossier_a, instructeur: create(:instructeur, email: 'abaca@exemple.fr'))
|
||||||
|
create(:follow, dossier: dossier_a, instructeur: create(:instructeur, email: 'abaca2@exemple.fr'))
|
||||||
create(:follow, dossier: dossier_z, instructeur: create(:instructeur, email: 'zythum@exemple.fr'))
|
create(:follow, dossier: dossier_z, instructeur: create(:instructeur, email: 'zythum@exemple.fr'))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -136,10 +136,11 @@ describe DossierProjectionService do
|
||||||
let(:column) { 'email' }
|
let(:column) { 'email' }
|
||||||
|
|
||||||
let(:dossier) { create(:dossier) }
|
let(:dossier) { create(:dossier) }
|
||||||
let!(:follow1) { create(:follow, dossier: dossier, instructeur: create(:instructeur, email: 'user1@host')) }
|
let!(:follow1) { create(:follow, dossier: dossier, instructeur: create(:instructeur, email: 'b@host')) }
|
||||||
let!(:follow2) { create(:follow, dossier: dossier, instructeur: create(:instructeur, email: 'user2@host')) }
|
let!(:follow2) { create(:follow, dossier: dossier, instructeur: create(:instructeur, email: 'a@host')) }
|
||||||
|
let!(:follow3) { create(:follow, dossier: dossier, instructeur: create(:instructeur, email: 'c@host')) }
|
||||||
|
|
||||||
it { is_expected.to eq "user1@host, user2@host" }
|
it { is_expected.to eq "a@host, b@host, c@host" }
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'for type_de_champ table' do
|
context 'for type_de_champ table' do
|
||||||
|
|
Loading…
Add table
Reference in a new issue