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
trues'il est dans le champ d'action du déclencheur,falsesinon.
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).