bring back find_or_create_instructeurs
This commit is contained in:
parent
d0c432d939
commit
fcd0f7c609
5 changed files with 22 additions and 19 deletions
|
@ -111,7 +111,7 @@ module Administrateurs
|
||||||
emails = params['emails'].presence || [].to_json
|
emails = params['emails'].presence || [].to_json
|
||||||
emails = JSON.parse(emails).map { EmailSanitizableConcern::EmailSanitizer.sanitize(_1) }
|
emails = JSON.parse(emails).map { EmailSanitizableConcern::EmailSanitizer.sanitize(_1) }
|
||||||
|
|
||||||
instructeurs, invalid_emails = Instructeur.find_or_create_instructeurs(emails:, administrateurs: procedure.administrateurs)
|
instructeurs, invalid_emails = groupe_instructeur.add_instructeurs(emails:)
|
||||||
|
|
||||||
if invalid_emails.present?
|
if invalid_emails.present?
|
||||||
flash[:alert] = t('.wrong_address',
|
flash[:alert] = t('.wrong_address',
|
||||||
|
|
|
@ -11,7 +11,7 @@ module Mutations
|
||||||
|
|
||||||
def resolve(groupe_instructeur:, instructeurs:)
|
def resolve(groupe_instructeur:, instructeurs:)
|
||||||
ids, emails = partition_instructeurs_by(instructeurs)
|
ids, emails = partition_instructeurs_by(instructeurs)
|
||||||
instructeurs, invalid_emails = Instructeur.find_or_create_instructeurs(ids:, emails:, administrateurs: groupe_instructeur.procedure.administrateurs)
|
instructeurs, invalid_emails = groupe_instructeur.add_instructeurs(ids:, emails:)
|
||||||
|
|
||||||
instructeurs.each { groupe_instructeur.add(_1) }
|
instructeurs.each { groupe_instructeur.add(_1) }
|
||||||
groupe_instructeur.reload
|
groupe_instructeur.reload
|
||||||
|
|
|
@ -29,7 +29,7 @@ module Mutations
|
||||||
result = { groupe_instructeur: }
|
result = { groupe_instructeur: }
|
||||||
|
|
||||||
if emails.present? || ids.present?
|
if emails.present? || ids.present?
|
||||||
instructeurs, invalid_emails = Instructeur.find_or_create_instructeurs(ids:, emails:, administrateurs: procedure.administrateurs)
|
instructeurs, invalid_emails = groupe_instructeur.add_instructeurs(ids:, emails:)
|
||||||
|
|
||||||
instructeurs.each { groupe_instructeur.add(_1) }
|
instructeurs.each { groupe_instructeur.add(_1) }
|
||||||
groupe_instructeur.reload
|
groupe_instructeur.reload
|
||||||
|
|
|
@ -51,6 +51,25 @@ class GroupeInstructeur < ApplicationRecord
|
||||||
.update_all(unfollowed_at: Time.zone.now)
|
.update_all(unfollowed_at: Time.zone.now)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def add_instructeurs(ids: [], emails: [])
|
||||||
|
instructeurs_to_add, valid_emails, invalid_emails = Instructeur.find_all_by_identifier_with_emails(ids:, emails:)
|
||||||
|
not_found_emails = valid_emails - instructeurs_to_add.map(&:email)
|
||||||
|
|
||||||
|
# Send invitations to users without account
|
||||||
|
if not_found_emails.present?
|
||||||
|
instructeurs_to_add += not_found_emails.map do |email|
|
||||||
|
user = User.create_or_promote_to_instructeur(email, SecureRandom.hex, administrateurs: procedure.administrateurs)
|
||||||
|
user.invite!
|
||||||
|
user.instructeur
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# We dont't want to assign a user to a groupe_instructeur if they are already assigned to it
|
||||||
|
instructeurs_to_add -= instructeurs
|
||||||
|
|
||||||
|
[instructeurs_to_add, invalid_emails]
|
||||||
|
end
|
||||||
|
|
||||||
def can_delete?
|
def can_delete?
|
||||||
dossiers.empty? && (procedure.groupe_instructeurs.active.many? || (procedure.groupe_instructeurs.active.one? && closed))
|
dossiers.empty? && (procedure.groupe_instructeurs.active.many? || (procedure.groupe_instructeurs.active.one? && closed))
|
||||||
end
|
end
|
||||||
|
|
|
@ -52,22 +52,6 @@ class Instructeur < ApplicationRecord
|
||||||
find_by(users: { email: email })
|
find_by(users: { email: email })
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.find_or_create_instructeurs(ids: [], emails: [], administrateurs:)
|
|
||||||
instructeurs_to_add, valid_emails, invalid_emails = Instructeur.find_all_by_identifier_with_emails(ids:, emails:)
|
|
||||||
not_found_emails = valid_emails - instructeurs_to_add.map(&:email)
|
|
||||||
|
|
||||||
# Send invitations to users without account
|
|
||||||
if not_found_emails.present?
|
|
||||||
instructeurs_to_add += not_found_emails.map do |email|
|
|
||||||
user = User.create_or_promote_to_instructeur(email, SecureRandom.hex, administrateurs: administrateurs)
|
|
||||||
user.invite!
|
|
||||||
user.instructeur
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
[instructeurs_to_add, invalid_emails]
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.find_all_by_identifier(ids: [], emails: [])
|
def self.find_all_by_identifier(ids: [], emails: [])
|
||||||
find_all_by_identifier_with_emails(ids:, emails:).first
|
find_all_by_identifier_with_emails(ids:, emails:).first
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue