Skip to content

Add overlapping Plage Ouvertures warnings

Vincent Agnano requested to merge feature/warnings-on-plage-ouvertures into master

Created by: adipasquale

https://trello.com/c/QEzwN6e0/1087-alerter-lors-de-la-cr%C3%A9ation-de-rdvs-ou-de-plages-douvertures-en-conflit-avec-dautres-plages-douvertures-potentiellement-dautres

️ lire les commits un par un

️ Cette PR a été sacrément longue et un peu dure à écrire 😓 elle est longue, mais relativement bien découpée, et il y a peut être la moitié de lignes de test

Visuel

overlap1

overlap2

Détails des 3 premiers commits de refactos préliminaires

  • renommer le RecurrenceConcern#ends_at actuel en first_occurence_ends_at. Cette méthode est en effet très perturbante actuellement car elle renvoie le ends_at de la première occurence pour les plages d'ouvertures ou absences récurrentes. On s'attend bien plus à ce qu'elle renvoie la date de fin éventuelle de la récurrence. La nouvelle méthode ends_at renvoie donc bien cette valeur de fin d'occurence ou nil s'il n'y a pas de fin (récurrence infinie)
  • correction du bout formulaire pour la récurrence qui envoyait recurrence="null" au lieu d'une chaine vide. Cela devenait problématique car je m'appuie plus qu'avant sur la présence de recurrence pour décider si une plage est effectivement récurrente ou non.
  • ajout d'un lien pour supprimer les plages d'ouvertures depuis l'index (plus simple pour faire plein de tests)

Détail du dernier commit d'implémentation de la fonctionnalité

  • l'interface s'appuie sur la gem https://github.com/rdv-solidarites/activemodel-caution (forkée juste pour changer la version de rails compatible)
  • je n'ai pas beaucoup optimisé la requête SQL pour détecter les plages d'ouvertures en conflit pour l'instant, j'attends de voir si c'est problématique ou non.
  • j'ai rajouté les avertissements de recoupement dans la vue index. Cependant, ça me gênait d'afficher un avertissement sans permettre aux agents de voir le détail : avec quelles plages ça recoupait. Je ne voulais pas rajouter ce détail sur la vue #edit, ça n'a pas trop de sens. Donc j'ai créé la vue #show qui n'existait pas encore.
  • La vue show permet de simplifier un peu l'interface index : j'ai enlevé le lien "dupliquer", qui est maintenant uniquement sur la vue #show. J'ai hésité à enlever complètement les liens supprimer et éditer de l'index, pour harmoniser avec les autres ressources où il faut toujours passer par le show et il n'y a pas de raccourcis. Pour l'instant je les ai laissés mais j'ai réduit la place qu'ils prennent en utilisant des icônes (oeil, stylo, poubelle). je sais que ce n'est pas très parlant mais c'est uniquement des raccourcis pour les power users. Les usagers normaux passeront par le show et tout sera très clair à mon avis (plus qu'avant).

Merge request reports