feat(webhooks): Retrieve user organisations when creating it from rdvsp #2369
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
closes #2244
Contexte
Dans certains cas, lorsqu'un usager créé depuis rdvsp a un rdv placé sur une organisation présente dans rdv-insertion, pour une catégorie de motif gérée par l'organisation dans rdv-insertion, nous importons le rdv ainsi que l'usager sur rdv-insertion.
Cependant, lorsque l'on crée l'usager sur rdv-i, on le lie uniquement à l'organisation du rdv en question.
Or cet usager peut potentiellement déjà appartenir à plusieurs organisations déjà présentes sur rdv-i. Ainsi il en résulte un problème de synchronisation:
Implémentation
Première tentative
Une première implémentation consistait à envoyer un webhook depuis rdvsp contenant les ids des organisations, mais cela a finalement été abandonné au profit d'un endpoint spécifique à rdv-i où l'on récupère l'usager avec toutes ses organisations rdv-insertion. Les détails de peuvent être retrouvées sur la PR associée sur rdv-service-public
Nouvelle tentative
Du coup nous appelons ce nouvel endpoint lorsque nous devrons créer un usager lors du process d'un webhook de rdv.
Pour cela j'introduis un nouveau service
RdvSolidaritesApi::RetrieveUser
chargé d'appeler et traiter la réponse de ce nouvel endpoint côté rdvsp.Développement annexe
Pour appeler rdvsp depuis le job, il faut définir un
Current.agent
pour queCurrent.rdv_solidarites
soit défini.J'encapsule cette logique dans une méthode d'instance
agent#with_rdv_solidarites_client
et l'appelle dans les endroits du code où on settait manuellement unCurrent.agent
.