add typo detection and suggestion for instructeur adding instructeur

This commit is contained in:
Lisa Durand 2024-07-04 13:40:01 +02:00
parent f163c04da6
commit 67be27e18f
No known key found for this signature in database
GPG key ID: 0DF91F2CA1E8B816
2 changed files with 21 additions and 6 deletions

View file

@ -1,5 +1,6 @@
module Instructeurs module Instructeurs
class GroupeInstructeursController < InstructeurController class GroupeInstructeursController < InstructeurController
include EmailSanitizableConcern
include UninterlacePngConcern include UninterlacePngConcern
include GroupeInstructeursSignatureConcern include GroupeInstructeursSignatureConcern
@ -19,16 +20,29 @@ module Instructeurs
end end
def add_instructeur def add_instructeur
instructeur = Instructeur.by_email(instructeur_email) || email = instructeur_email.present? ? [instructeur_email].to_json : [].to_json
create_instructeur(instructeur_email) 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? if instructeur.blank?
flash[:alert] = "Ladresse email « #{instructeur_email} » nest pas valide." flash[:alert] = "Ladresse email « #{email} » nest pas valide."
elsif groupe_instructeur.instructeurs.include?(instructeur) elsif groupe_instructeur.instructeurs.include?(instructeur)
flash[:alert] = "Linstructeur « #{instructeur_email} » est déjà dans le groupe." flash[:alert] = "Linstructeur « #{email} » est déjà dans le groupe."
else else
groupe_instructeur.add(instructeur) groupe_instructeur.add(instructeur)
flash[:notice] = "Linstructeur « #{instructeur_email} » a été affecté au groupe." flash[:notice] = "Linstructeur « #{email} » a été affecté au groupe."
if instructeur.user.email_verified_at if instructeur.user.email_verified_at
GroupeInstructeurMailer GroupeInstructeurMailer
@ -100,7 +114,7 @@ module Instructeurs
end end
def instructeur_email def instructeur_email
params[:instructeur][:email].strip.downcase params.dig('instructeur', 'email')&.strip&.downcase
end end
def instructeur_id def instructeur_id

View file

@ -21,6 +21,7 @@
Démarche « #{@procedure.libelle} » Démarche « #{@procedure.libelle} »
.card.fr-mt-2w .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 %h2.fr-h3 Gestion des instructeurs
= form_for(Instructeur.new(user: User.new), url: { action: :add_instructeur }, html: { class: 'form' }) do |f| = form_for(Instructeur.new(user: User.new), url: { action: :add_instructeur }, html: { class: 'form' }) do |f|
%h3.fr-h4 Affecter un nouvel instructeur %h3.fr-h4 Affecter un nouvel instructeur