Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Validation des numéros ANTS des proches #4824

Merged
merged 7 commits into from
Jan 20, 2025

Conversation

adipasquale
Copy link
Contributor

@adipasquale adipasquale commented Nov 20, 2024

Closes #4777

Contexte

Actuellement les numéros de pré-demande ANTS des proches ne sont pas du tout validés.

Cette PR fait suite à ces PR de préparation : #4770 et #4782 qui ont permis d’extraire la logique de validation des numéros de pré–demande ANTS.

Solution

Dans cette PR on rajoute de la validation sur les champs de numéros de pré-demande ANTS des proches.

Le gros changement est qu’on introduit un nouveau form object RelativeUserForm.
Il délègue plusieurs attributs au user passé en param, dont le ants_pre_demande_number.
Le form object rajoute la validation du numéro de pré-demande quand c’est demandé.

Captures d’écran

image

Review app

RDV sur cette url :

https://demo-rdv-solidarites-pr4824.osc-secnum-fr1.scalingo.io/prendre_rdv/?departement=95&city_code=95582&street_ban_id=&latitude=48.973523&longitude=2.253694&address=Sannois%2C+95110&button=

et vous pouvez vous connecter avec [email protected] : Rdvservicepublictest1!

et utiliser les numéros ANTS RDVSPUB001 à 004

PRs suivantes

  • modification du message pour préciser que le numéro est obligatoire et pas recommandé
  • amélioration de l’UI pour afficher le numéro de pré-demande ANTS des proches dans le flow de prise de RDV et permettre de l’éditer
  • migration pour corriger les numéros de demande existants dans la DB
  • amélioration du flow ANTS pour que les durées de créneaux correspondent au nombre de participants

@adipasquale adipasquale force-pushed the refactor/validate-ants-numbers branch from cc02afd to 94aec7d Compare November 20, 2024 09:26
@adipasquale adipasquale changed the title [WIIIP] introduction form object pour les proches + ajout de la validation [WIP] introduction form object pour les proches + ajout de la validation Nov 20, 2024
Base automatically changed from refactor/validate-ants-numbers to production December 9, 2024 07:43
@adipasquale adipasquale force-pushed the fix/validate-ants-numbers-relatives branch from c529afa to a9c4ca1 Compare January 2, 2025 08:26
@adipasquale adipasquale force-pushed the fix/validate-ants-numbers-relatives branch from 68b77ae to 6712b41 Compare January 13, 2025 14:51
@adipasquale adipasquale force-pushed the fix/validate-ants-numbers-relatives branch from 6712b41 to 9501ebe Compare January 13, 2025 15:09
@adipasquale adipasquale changed the title [WIP] introduction form object pour les proches + ajout de la validation Validation des numéros ANTS des proches Jan 20, 2025
p = params.require(:relative_user_form)
.permit(:first_name, :last_name, :birth_date, :ants_pre_demande_number, :ants_pre_demande_number_required)
.to_h.symbolize_keys
p[:ants_pre_demande_number_required] = p[:ants_pre_demande_number_required].to_b
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

je fais le parsing du booléen ici même si ce n’est pas super conventionnel

private

def validate_user
errors.merge!(user) if user.invalid?
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ça permet de propager les erreurs au formulaire pour qu’elles s’affichent correctement

@adipasquale adipasquale marked this pull request as ready for review January 20, 2025 14:16
Copy link
Contributor

@francois-ferrandis francois-ferrandis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ça m'a l'air très bien ! 🚀

Ça me donne envie de lire des guides pour mieux comprendre les enjeux derrière les form objects. J'ai l'impression que dans le cas présent c'est utile pour :

  • activer ou non la validation via ants_pre_demande_number_required, qui n'est pas un attribut de l'usager mais bin un élément de contexte
  • utiliser validates_with AntsPreDemandeNumberValidation dans ce contexte mais pas directement sur le modèle User (de manière générale je crois que les form objects permettent d'extraire les validations du modèle)

@adipasquale
Copy link
Contributor Author

merci @francois-ferrandis 🙇

En effet ici l’intérêt du form object est de :

  • signifier clairement que ce n’est pas un formulaire de user « complet » mais formulaire pour un certain type de user : les proches. Ces formulaires ne présentent pas autant de champs que le formulaire classique
  • pouvoir rajouter de la validation contextuellement. À ce sujet, j’ai hésité à faire deux form objects : RelativeUserForm et RelativeUserWithAntsPreDemandeNumberForm, mais j’ai choisi d’en faire un seul avec un attribut transitoire, c’est discutable

@adipasquale adipasquale merged commit 9ac2e46 into production Jan 20, 2025
16 checks passed
@adipasquale adipasquale deleted the fix/validate-ants-numbers-relatives branch January 20, 2025 16:14
francois-ferrandis added a commit that referenced this pull request Jan 20, 2025
@francois-ferrandis francois-ferrandis mentioned this pull request Jan 20, 2025
francois-ferrandis added a commit that referenced this pull request Jan 20, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: ✅ Done
Development

Successfully merging this pull request may close these issues.

Aucune validation sur les numéros de pré-demande ANTS des proches
2 participants