Skip to content

List d'attente inscriptions

Objectif : Permettre aux usagers de s'inscrire en liste d'attente lorsqu'un cours est complet;

Concerne les inscriptions en ligne et les inscriptions sur place

Chaque liste d'attente est relative à un groupe cours (session) Ajouter un drapeau au groupe cours pour savoir s'il associé à une liste d'attente (tous les cours n'ont pas de liste d'attente) Lorsqu'un groupe cours est complet, ajouter un bouton Liste d'attente, en indiquant la taille de la liste d'attente

Les usagers peuvent s'inscrire sur liste d'attente qu'ils soient adhérents ou non, identifiés par leur adresse mail

Lorsqu'une place est libérée (annulation d'une inscription d'un autre adhérent, ou par commmande cronjob - à décider) :

  • si la liste d'attente n'est pas vide, le cours reste complet

  • envoi d'un mail au premier de la liste d'attente avec un lien permettant une inscription directe (ajout au panier), lien pour se retirer de la liste d'attente

  • lien valable 3 jours, rappel 24 heures avant l'expiration

  • après expiration du lien, envoi d'un mail notifiant a l'utilisateur qu'il a perdu sa place

  • Le lien d'inscription:

    • ajoute le groupe au panier de l'utilisateur
    • redirige vers la page d'identification pour l'inscription (comme au retour du mail de confirmation pour une inscription classique)
    • après finalisation de l'inscription, retrait de la liste d'attente (ou marquer comme traité);
    • après finalisation de l'inscription, suppression de l'utilisateur des listes d'attente des autres groupes du même cours
    • après finalisation de l'inscription, envoi mail aux autres usagers en attente pour le même cours l'informant de son rang dans la file

Réalisation (idées)

  • Entité Cours

    • ajouter boolean hasFileAttente
  • Entité Souhait

    • ajouter ManyToOne ItemListeAttente (nullable)
  • Entité ItemListeAttente

    • mail
    • date création
    • hash (pour lien)
    • date acceptation (nullable)
    • date rappel (nullable)
    • ManyToOne(GroupeCours)
    • processed (boolean)
  • Panier : c'est un json en session, liste d'objets, si le type est "cours", ajouter un attribut liste d'attente (id ItemListeAttente)

  • Controller Liste d'attente

    • Ajout liste attente (formulaire mail),cree ou ajoute au panier
    • Suppr liste attente (page confirmation)
    • Inscription (-> ajout panier + redirection vers identification)
  • Commande (cronjob)

    • Parcoure les groupes avec liste d'attente, non complets, avec liste d'attente non vide
    • envoi du mail au premier de la liste d'attente (date acceptation == null), set date acceptation
    • envoi des mails de rappel (now - date acceptation > 48h et date rappel == null)
  • InscriptionService

    • finalisation inscription : marquer item file d'attente comme traité (grace au souhait)
  • InscriptionEnLignController

    • createSouhaitsFromPanier
  • Inscription sur place :

    • apres identification de l'adhérent, ajouter à la selection des cours ceux ou l'utilisateur est premier de la file d'attente et oune place est libre