From 67be27e18f21ee40db4adfd94a9b0e576fb6474a Mon Sep 17 00:00:00 2001 From: Lisa Durand Date: Thu, 4 Jul 2024 13:40:01 +0200 Subject: [PATCH] add typo detection and suggestion for instructeur adding instructeur --- .../groupe_instructeurs_controller.rb | 26 ++++++++++++++----- .../groupe_instructeurs/show.html.haml | 1 + 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/app/controllers/instructeurs/groupe_instructeurs_controller.rb b/app/controllers/instructeurs/groupe_instructeurs_controller.rb index 3193d9455..d75254b5c 100644 --- a/app/controllers/instructeurs/groupe_instructeurs_controller.rb +++ b/app/controllers/instructeurs/groupe_instructeurs_controller.rb @@ -1,5 +1,6 @@ module Instructeurs class GroupeInstructeursController < InstructeurController + include EmailSanitizableConcern include UninterlacePngConcern include GroupeInstructeursSignatureConcern @@ -19,16 +20,29 @@ module Instructeurs end def add_instructeur - instructeur = Instructeur.by_email(instructeur_email) || - create_instructeur(instructeur_email) + email = instructeur_email.present? ? [instructeur_email].to_json : [].to_json + email = check_if_typo(email)&.first + errors = Array.wrap(generate_emails_suggestions_message(@maybe_typos)) + + if !errors.empty? + flash.now[:alert] = errors.join(". ") if !errors.empty? + + @procedure = procedure + @groupe_instructeur = groupe_instructeur + @instructeurs = paginated_instructeurs + return render :show + end + + instructeur = Instructeur.by_email(email) || + create_instructeur(email) if instructeur.blank? - flash[:alert] = "L’adresse email « #{instructeur_email} » n’est pas valide." + flash[:alert] = "L’adresse email « #{email} » n’est pas valide." elsif groupe_instructeur.instructeurs.include?(instructeur) - flash[:alert] = "L’instructeur « #{instructeur_email} » est déjà dans le groupe." + flash[:alert] = "L’instructeur « #{email} » est déjà dans le groupe." else groupe_instructeur.add(instructeur) - flash[:notice] = "L’instructeur « #{instructeur_email} » a été affecté au groupe." + flash[:notice] = "L’instructeur « #{email} » a été affecté au groupe." if instructeur.user.email_verified_at GroupeInstructeurMailer @@ -100,7 +114,7 @@ module Instructeurs end def instructeur_email - params[:instructeur][:email].strip.downcase + params.dig('instructeur', 'email')&.strip&.downcase end def instructeur_id diff --git a/app/views/instructeurs/groupe_instructeurs/show.html.haml b/app/views/instructeurs/groupe_instructeurs/show.html.haml index 1197d93bd..e0a42aa46 100644 --- a/app/views/instructeurs/groupe_instructeurs/show.html.haml +++ b/app/views/instructeurs/groupe_instructeurs/show.html.haml @@ -21,6 +21,7 @@ Démarche « #{@procedure.libelle} » .card.fr-mt-2w + = render Procedure::InvitationWithTypoComponent.new(maybe_typos: @maybe_typos, url: add_instructeur_instructeur_groupe_path(@procedure, @groupe_instructeur.id), title: "Avant d'ajouter l'email, veuillez confirmer" ) %h2.fr-h3 Gestion des instructeurs = form_for(Instructeur.new(user: User.new), url: { action: :add_instructeur }, html: { class: 'form' }) do |f| %h3.fr-h4 Affecter un nouvel instructeur