Aller au contenu

Déclencheurs

Conception du modèle PriorityRule

Un déclencheur:

  • Est un ensemble de filtres
  • Sert à définir les articles qui peuvent générer une priorité de vente
  • Peut être de plusieurs types
  • Chaque type doit gérer sa logique de filtrage
classDiagram
    class PriorityRule {
        +bigint club_id
        +bigint saison_id
        +bigint priority_id
        +bigint id

        +string type
    }

    Priority "0..1" <--> "1" PriorityRule : déclencheur

    PriorityRule "0..n" <--> "0..n" Event
    PriorityRule "0..n" <--> "0..n" CategoriePlace
    PriorityRule "0..n" <--> "0..n" TemplateArticleEvent
    PriorityRule "0..n" <--> "0..n" Formule
    PriorityRule "0..n" <--> "0..n" Bundle
    PriorityRule "0..n" <--> "0..n" BundleVariant
    PriorityRule "0..n" <--> "0..n" ModeleArticle

Type

Type type : champ utilisé pour la CTI.

Chaque type de déclencheur possède sa propre classe définissant ses relations avec d'autres modèles, ses règles de filtrage (méthode pour définir si un article est dans le champ d'action du déclencheur...).

Relations

Liste non exhaustive, définie au cas par cas des types.

Fonctionnement

2 cas : + ~~Lors de la création ou modification d'un déclencheur (ou au passage en actif de le Priority),~~ Au passage en actif, on lance un job asynchrone qui cherche les articles éligibles et leur génère les PriorityItem en conséquence. + Après le passage d'une commande : Pour chaque nouvel article, on itère sur les déclencheurs actifs, et on génère les PriorityItem en conséquence, toujours dans un job asynchrone.

PS : Une autre option pourrait être une CRON qui génère/supprime les priorités de tous les déclencheurs actifs. À étudier.

Méthodes à implémenter obligatoirement

  • Une méthode qui prend un article et renvoi true s'il est dans le champ d'action du déclencheur, false sinon.

OU

  • Une méthode qui prend une liste d'articles, et renvois ceux dans le champ d'action du déclencheur (mieux, car plus polyvalent).