Aller au contenu

Configuration du stade par Match

RD7534 - Intégration de la gestion de l'enceinte au match

État : En production v1.1 tag: 1.1.0

La documentation est en cours de réécriture donc elle peut encore contenir des fautes

Info général

La configuration du stade permet de modifier la disponibilité, le réservoir et la catégorie de place pour les places ou les zones dans une configuration avec un nom et une description. Cette configuration peut-être ensuite utilisé pour un produit ou pour un match.

Une configuration peut-être utilisé comme configuration par défaut, ça aura pour effet que toutes les nouvelles configurations de stade créer seront basées sur celle-ci sauf si on choisi une autre configuration en tant que modèle.

Attention: La disponibilité de la place ne concerne pas la disponibilité de la place en terme de vente. Une fois une place achetée, elle ne sera pas disponible quelque soit l'état de la disponibilité coté configuration. Elle permet uniquement de retirer une place à la vente pour éviter qu'elle soit vendu. Si elle est déjà vendu, la commande ne sera pas annulé automatiquement, il faudra gérer ce cas manuellement.

Diagramme

classDiagram
    class ConfigurationStade {
        +int id
        +int saison_id
        +ConfigurationStade generate_from
        +int etat_generation
        +int type_of_configuration
        +bool default
        +datetime discarded_at
    }

    class ConfigurationZone {
        +int id
        +int zone_logique_id
        +string couleur_principale
        +int nbre_place
        +bool place
    }
    ConfigurationStade "0..*" <--> "1" ConfigurationZone : configuration_stade

    class ConfigurationPlace {
        +int id
        +int place_logique_id
        +int categorie_place_id
        +int reservoir_id
        +bool disponible
    }
    ConfigurationZone "0..*" <--> "1" ConfigurationPlace : configuration_zone

Détail ConfigurationStade

  • generate_from : La configuration à utiliser lors de la génération (Par défaut récupère la configuration du stade par défaut pour la même saison)
  • etat_generation : Enum avec les valeurs (en_attente, en_cours, termine, erreur)

    On peut connaître l'avancement avec l'aide de la fonction pourcentage_generation

  • type_of_configuration : Le type de configuration
    • template (Peut-être utilisé pour générer une nouvelle configuration de stade)

      On peut utiliser n'importe quel Configuration de Stade pour générer une nouvelle configuration de stade mais il est recommandé de plutôt ce basé sur des modèles créer en amont.

    • match (Doit-être utilisé uniquement pour un match)

      On peut utiliser une Configuration de Stade de type match pour plusieurs produits coté Back mais c'est déconseillé, car un club pourrait par accident changer la configuration d'un autre match ou d'un autre produit sans en être informé.

    • formule (Doit-être utilisé uniquement pour des formules)
  • default : La configuration de stade par défaut (On peut avoir qu'une seule configuration par défaut par saison)
  • discarded_at : Permet de faire un soft-delete

Détail ConfigurationZone

  • zone_logique_id : La zone logique concerné par la configuration.
  • couleur_principale : La couleur principale affiché sur le stade.

    Si on choisi qu'une seule catégorie de place pour l'ensemble des places logiques, alors cette valeur sera égale à la couleur de la catégorie de place. Si on en a plusieurs de choisis, alors le dashboard demandera de choisir une couleur parmis les catégorie de place choisi ou bien la couleur "Mixte" défini dans le club avec le champ couleur_zone_mixe.

  • place : Permet de définir si la zone est placée ou non. (Pour le moment, le champ n'est pas utilisé)
  • nbre_place : Si la zone est en non placé, alors ça permet de choisir le nombre de place maximum autorisé pour un match. (Pour le moment, le champ n'est pas utilisé)

Détail ConfigurationPlace

  • place_logique_id : La place logique concerné par la configuration.
  • disponible : Si la place est disponible à la vente ou non.
  • reservoir_id : Le réservoir de la place.
  • categorie_place_id : La catégorie de place de la place.

ActiveModel ConfigurationStadeAction

L'ActiveModel est utilisé pour mettre à jour la configuration d'un stade depuis le dashboard.

Diagramme

classDiagram
    class ConfigurationStadeAction {
        +int configuration_stade_id
        +string couleur_principale
        +int[] modele_article_ids
        +bool disponible
        +int reservoir_id
        +int categorie_place_id
        +int[] zone_logique_ids
        +int[] place_logique_ids

        +available_matchs() Match[]
        +process() void
        +prepare_to_view(with_configuration_place: false, with_configuration_zone: true) Array
        +self.permit_params()  Hash
    }

Filtres disponibles

  • configuration_stade_id : La configuration à modifier

  • zone_logique_ids : Liste des zones logiques concernées par la configuration

  • place_logique_ids : Liste des places logiques concernées par la configuration

Configurations disponibles

  • en_vente : Si les places sont disponibles à la vente ou non

  • reservoir_id : Le réservoir pour les places de la sélection

  • categorie_place_id : La catégorie de place pour les places de la sélection

  • modele_article_ids : Permet d'associer une liste de modèle article à la configuration

Méthodes disponibles

  • available_matchs : Retourne les matchs qui peuvent être configurés

    Filtre sur tout les matchs ou la billetterie n'a pas encore été cloturé

  • prepare_to_view : Renvoie les données avec les données.

    Example : configuration_places, configuration_zones = prepare_to_view

    Pour les configurations de zone et les configurations de place, il renvoie aussi:

    • disponibles : boolean[]
    • reservoir_ids : int[]
    • categorie_place_ids : int[]
  • process : Permet de traité les changements

ActiveModel ConfigurationStadeBuilder

L'ActiveModel est utilisé pour générer les configurations de zone et de place. Il est utilisé généralement par le job ConfigurationStadeBuilderJob.

Il permet de gérer l'ancien format de configuration (la configuration était directement dans les zones/places logiques). Il gère aussi le nouveau format (ConfigurationStade) avec la récupération de la configuration du stade à utilisé pour la génération avec l'aide de la méthode generate_from.

Diagramme

classDiagram
    class ConfigurationStadeBuilder {
        +int configuration_stade

        +process() void
    }

Filtres disponibles

  • configuration_stade : La configuration à générer (int ou directement la configuration de stade)

Méthodes disponibles

  • process : Permet de traité les changements

API

ActiveModel PlaceDisponibilite

L'ActiveModel est utilisé pour récupérer l'état de disponibilité des places depuis un modèle article. On peut également activer le mode debug qui va afficher plein d'informations supplémentaires dans la console pour aider à comprendre pourquoi une place est disponible ou non.

Diagramme

classDiagram
    class ConfigurationStadeBuilder {
        +initialize(modele_article, debug: false) void
        +disponible?(place_logique_id) bool
        +take! PlaceLogique
        +place_logiques_view PlaceLogique[]
        +zone_logiques_view ZoneLogique[]
        +categorie_places_view CategoriePlace[]
    }

Méthodes disponibles

  • disponible? : Permet de savoir si une place est disponible pour le modèle article
  • take! : Permet de récupérer une place disponible
  • place_logiques_view : Renvoie l'état de disponibilité des places avec leurs configurations (Utilisé coté MiniSite pour afficher les détails d'une zone logique)
  • zone_logiques_view : Renvoie l'état de disponibilité des zones avec leurs configurations (Utilisé coté MiniSite pour afficher le stade)
  • categorie_places_view : Renvoie les catégories de place avec leurs disponibilités sur le stade