Skip to content

Uniquely identifiable motifs in user rdv search tunnel

Vincent Agnano requested to merge feature/search-motif-location-type into master

Created by: adipasquale

️ preliminary to https://github.com/betagouv/rdv-solidarites.fr/pull/976

️ lisible commit par commit

Le but de cette PR est de pouvoir faire référence à des motif précis dans le tunnel de recherche, à partir de la page du choix du lieu.

En effet, vu que la secto va maintenant dépendre du motif, il nous faut savoir exactement à quel motif on fait référence pour appliquer les bonnes règles

Modification de l'interface

Actuellement, à partir de la page de choix du lieu, on a un libellé de motif (motif_name) et un service. Il manque le location_type pour identifier uniquement les motifs (pour chaque lieu).

On remplace donc le champ de sélection d'un libellé de motif par un champ de sélection d'une combinaison "libellé + location type". C'est assez peu visible pour l'usager, la seule différence est que les motifs par téléphone auront un suffixe "(Par téléphone)" dans leur libellé sur le formulaire de recherche.

Si avant il y avait deux motifs "Consultation sociale", un par tél et un sur place, avant il n'y avait qu'une entrée dans le champ de recherche, maintenant il y en aura deux.

Refactoring du service CreneauSearch

Il y a deux services très proches : CreneauSearch et CreneauxSearch (singulier et pluriel). Ces deux services partagent un concern qui fait la majeure partie du travail.

Jusqu'ici ce concern faisait l'hypothèse qu'il pouvait recevoir plusieurs motifs (mais le gérait mal). Grace à la modif du dessus, on sait maintenant que ce service ne recevra toujours qu'un seul motif.

Ça permet de le simplifier. On pourrait probablement aller plus loin et réunir en un seul service ou bien revoir la structure avec un concern partagé

Réparation Edge case dans creneaux builder

Le creneaux builder gérait mal le cas où une seule plage d'ouverture contient des motifs ayant le même nom mais des location types différents (peu probable dans la vraie vie).

TODO

  • tests IRL

Merge request reports