transfere les services lors de suppression admin
Lorsqu'un administrateur est supprimé, ses services sont transférés à un autre administrateur pour chacune de ses procédures
This commit is contained in:
parent
d9570eedc6
commit
675bbdad15
3 changed files with 29 additions and 5 deletions
|
@ -22,11 +22,7 @@ module Manager
|
|||
def delete
|
||||
administrateur = Administrateur.find(params[:id])
|
||||
|
||||
if !administrateur.can_be_deleted?
|
||||
fail "Impossible de supprimer cet administrateur car il a des dossiers ou des procédures"
|
||||
end
|
||||
administrateur.dossiers.each(&:delete_and_keep_track)
|
||||
administrateur.destroy
|
||||
administrateur.delete_and_transfer_services
|
||||
|
||||
logger.info("L'administrateur #{administrateur.id} est supprimé par #{current_administration.id}")
|
||||
flash[:notice] = "L'administrateur #{administrateur.id} est supprimé"
|
||||
|
|
|
@ -70,4 +70,17 @@ class Administrateur < ApplicationRecord
|
|||
def can_be_deleted?
|
||||
dossiers.state_instruction_commencee.none? && procedures.all? { |p| p.administrateurs.count > 1 }
|
||||
end
|
||||
|
||||
def delete_and_transfer_services
|
||||
if !can_be_deleted?
|
||||
fail "Impossible de supprimer cet administrateur car il a des dossiers ou des procédures"
|
||||
end
|
||||
dossiers.each(&:delete_and_keep_track)
|
||||
|
||||
procedures.each do |procedure|
|
||||
next_administrateur = procedure.administrateurs.where.not(id: self.id).first
|
||||
procedure.service.update(administrateur: next_administrateur)
|
||||
end
|
||||
destroy
|
||||
end
|
||||
end
|
||||
|
|
|
@ -46,6 +46,21 @@ describe Administrateur, type: :model do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#delete_and_transfer_services' do
|
||||
let!(:administrateur) { create(:administrateur) }
|
||||
let!(:autre_administrateur) { create(:administrateur) }
|
||||
let!(:procedure) { create(:procedure, :with_service, administrateurs: [administrateur, autre_administrateur]) }
|
||||
let(:service) { procedure.service }
|
||||
|
||||
it "delete and transfer services to other admin" do
|
||||
service.update(administrateur: administrateur)
|
||||
administrateur.delete_and_transfer_services
|
||||
|
||||
expect(Administrateur.find_by(id: administrateur.id)).to be_nil
|
||||
expect(service.reload.administrateur).to eq(autre_administrateur)
|
||||
end
|
||||
end
|
||||
|
||||
# describe '#password_complexity' do
|
||||
# let(:email) { 'mail@beta.gouv.fr' }
|
||||
# let(:passwords) { ['pass', '12pass23', 'démarches ', 'démarches-simple', 'démarches-simplifiées-pwd'] }
|
||||
|
|
Loading…
Reference in a new issue