From f163c04da614994dbd36344be783708e5057a3d5 Mon Sep 17 00:00:00 2001 From: Lisa Durand Date: Wed, 3 Jul 2024 16:53:23 +0200 Subject: [PATCH] add typo detection and suggestion for admin adding instructeurs --- .../groupe_instructeurs_controller.rb | 23 ++++++++++++++----- .../_instructeurs.html.haml | 1 + 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/app/controllers/administrateurs/groupe_instructeurs_controller.rb b/app/controllers/administrateurs/groupe_instructeurs_controller.rb index 50a940690..90cb20245 100644 --- a/app/controllers/administrateurs/groupe_instructeurs_controller.rb +++ b/app/controllers/administrateurs/groupe_instructeurs_controller.rb @@ -1,6 +1,7 @@ module Administrateurs class GroupeInstructeursController < AdministrateurController include ActiveSupport::NumberHelper + include EmailSanitizableConcern include Logic include UninterlacePngConcern include GroupeInstructeursSignatureConcern @@ -219,18 +220,20 @@ module Administrateurs def add_instructeur emails = params['emails'].presence || [].to_json - emails = JSON.parse(emails).map { EmailSanitizableConcern::EmailSanitizer.sanitize(_1) } + + emails = check_if_typo(emails) + errors = Array.wrap(generate_emails_suggestions_message(@maybe_typos)) instructeurs, invalid_emails = groupe_instructeur.add_instructeurs(emails:) if invalid_emails.present? - flash[:alert] = t('.wrong_address', + errors += [t('.wrong_address', count: invalid_emails.size, - emails: invalid_emails.join(', ')) + emails: invalid_emails.join(', '))] end if instructeurs.present? - flash[:notice] = if procedure.routing_enabled? + flash.now[:notice] = if procedure.routing_enabled? t('.assignment', count: instructeurs.size, emails: instructeurs.map(&:email).join(', '), @@ -250,10 +253,18 @@ module Administrateurs end end + flash.now[:alert] = errors.join(". ") if !errors.empty? + + @procedure = procedure + @instructeurs = paginated_instructeurs + @available_instructeur_emails = available_instructeur_emails + if procedure.routing_enabled? - redirect_to admin_procedure_groupe_instructeur_path(procedure, groupe_instructeur) + @groupe_instructeur = groupe_instructeur + render :show else - redirect_to admin_procedure_groupe_instructeurs_path(procedure) + @groupes_instructeurs = paginated_groupe_instructeurs + render :index end end diff --git a/app/views/administrateurs/groupe_instructeurs/_instructeurs.html.haml b/app/views/administrateurs/groupe_instructeurs/_instructeurs.html.haml index 3e8dd7643..77470a328 100644 --- a/app/views/administrateurs/groupe_instructeurs/_instructeurs.html.haml +++ b/app/views/administrateurs/groupe_instructeurs/_instructeurs.html.haml @@ -1,5 +1,6 @@ .card + = render Procedure::InvitationWithTypoComponent.new(maybe_typos: @maybe_typos, url: add_instructeur_admin_procedure_groupe_instructeur_path(@procedure, groupe_instructeur.id), title: "Avant d'ajouter l'email, veuillez confirmer" ) .card-title Affectation des instructeurs = form_for :instructeur, url: { action: :add_instructeur, id: groupe_instructeur.id }, html: { class: 'form' } do |f| .instructeur-wrapper