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:
on n'affiche pas toutes ses orgas sur rdvi
on laisse la possibilité de l'ajouter sur ces orgas depuis rdv-i ce qui engendrera des erreurs
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 que Current.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 un Current.agent.
⚠️ Cette PR est liée et doit être mergée après la PR associée sur rdv-sp : https://github.com/betagouv/rdv-service-public/pull/4674
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'instanceagent#with_rdv_solidarites_client
et l'appelle dans les endroits du code où on settait manuellement unCurrent.agent
.