Les parchemins du registre

Exercice 5 sur 6 du chapitre 10 · 280 XP · 5 objectifs vérifiés par des tests

Notions abordées : Événements du workflow#[AsEnteredListener]entered et leaveMailer

Il y a un souci dans la taverne : le voyageur reçoit « Votre table vous attend » dès qu'il remplit le formulaire. Or rien n'est encore confirmé : Gorm peut encore refuser la réservation, un soir de festin complet. Et quand il annule une réservation, le voyageur n'en sait rien.

Le parchemin de confirmation doit partir quand la taverne confirme. Et un parchemin d'annulation, quand elle annule.

Les événements du workflow

À chaque transition, le workflow annonce chacune de ses étapes :

  1. guard : la transition est-elle permise ?
  2. leave : l'objet quitte sa place ;
  3. transition : il est en chemin ;
  4. enter, puis entered : il est arrivé à sa nouvelle place ;
  5. completed : c'est fini ;
  6. announce : pour chaque transition désormais possible.

Chaque événement se décline par workflow, par transition ou par place (workflow.reservation.entered.confirmee). Réagir à un changement de statut, c'est écouter le bon.

L'intérêt : que la réservation soit confirmée depuis le registre, une commande ou l'API, le parchemin part.

Votre mission

  1. Quand une réservation arrive à confirmee, le parchemin de confirmation part.
  2. Quand elle arrive à annulee, un parchemin d'annulation part : sujet « Votre réservation au Dragon Ivre est annulée », avec le titre « Votre réservation est annulée », le nom, la date, et un lien « Réserver une autre table ». Écrivez Parcheminier::envoyerLAnnulation() et son template.
  3. Annuler une réservation déjà confirmée n'envoie que l'annulation ; honorer n'envoie rien.
  4. Le formulaire de réservation n'envoie plus la confirmation.

Pour essayer : connectez-vous avec gorm@dragon-ivre.fr / tonneau, confirmez et annulez des réservations dans le registre, puis ouvrez la 📬 boîte aux lettres.