import several instructeurs for a routee procedure
Co-authored-by: simon lehericey <mail@simon.lehericey.net>
This commit is contained in:
parent
8ea5c9d9c8
commit
792b53beeb
2 changed files with 177 additions and 0 deletions
39
app/services/instructeurs_import_service.rb
Normal file
39
app/services/instructeurs_import_service.rb
Normal file
|
@ -0,0 +1,39 @@
|
|||
class InstructeursImportService
|
||||
def import(procedure, groupes_emails)
|
||||
admins = procedure.administrateurs
|
||||
|
||||
errors = []
|
||||
|
||||
groupes_emails.each do |groupe_emails|
|
||||
groupe = groupe_emails["groupe"].strip
|
||||
instructeur_email = groupe_emails["email"].strip.downcase
|
||||
|
||||
if groupe.present? && Devise.email_regexp.match?(instructeur_email)
|
||||
gi = procedure.groupe_instructeurs.find_or_create_by!(label: groupe)
|
||||
|
||||
instructeur = Instructeur.by_email(instructeur_email) || create_instructeur(admins, instructeur_email)
|
||||
|
||||
if !gi.instructeurs.include?(instructeur)
|
||||
gi.instructeurs << instructeur
|
||||
|
||||
end
|
||||
else
|
||||
errors << instructeur_email
|
||||
end
|
||||
end
|
||||
|
||||
errors
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def create_instructeur(administrateurs, email)
|
||||
user = User.create_or_promote_to_instructeur(
|
||||
email,
|
||||
SecureRandom.hex,
|
||||
administrateurs: administrateurs
|
||||
)
|
||||
user.invite!
|
||||
user.instructeur
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue