Commit 7d2df19a authored by Thibaut Vallee's avatar Thibaut Vallee
Browse files

Mapping

parent fb3e65a3
Loading
Loading
Loading
Loading
+16 −6
Changes for config/services.yaml: 16 added lines, 6 removed lines.
Original line number Diff line number Diff line
@@ -41,11 +41,21 @@ services:
    Unicaen\Evenement\Repository\EvenementRepositoryInterface:
        alias: Unicaen\Evenement\Repository\EvenementRepository

    Unicaen\Evenement\Repository\EtatRepositoryInterface:
        alias: Unicaen\Evenement\Repository\EtatRepository
    Unicaen\Evenement\Repository\EvenementEtatRepositoryInterface:
        alias: Unicaen\Evenement\Repository\EvenementEtatRepository

    Unicaen\Evenement\Repository\TypeRepositoryInterface:
        alias: Unicaen\Evenement\Repository\TypeRepository
    Unicaen\Evenement\Repository\EvenementTypeRepositoryInterface:
        alias: Unicaen\Evenement\Repository\EvenementTypeRepository

    Unicaen\Evenement\Repository\JournalRepositoryInterface:
        alias: Unicaen\Evenement\Repository\JournalRepository
    Unicaen\Evenement\Repository\EvenementJournalRepositoryInterface:
        alias: Unicaen\Evenement\Repository\EvenementJournalRepository

    Unicaen\Evenement\Repository\EvenementAssociationRepositoryInterface:
        alias: Unicaen\Evenement\Repository\EvenementAssociationRepository

    Unicaen\Evenement\Repository\EvenementTypeAssociationRepositoryInterface:
        alias: Unicaen\Evenement\Repository\EvenementTypeAssociationRepository

    Unicaen\Evenement\EventListener\MappableEvenementListener:
        arguments:
            $evenementEntityMap: '%unicaen.evenement.evenement_entity_map%'
+5 −0
Changes for config/unicaen.evenement.yaml.dist: 5 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -44,3 +44,8 @@ unicaen_evenement:
        #Durée de conservation des journaux
        # Format attendu : DateInterval PHP
        conservation_time: P1Y

### Mapping entre les événements et les entités si l'on utilise l'interface MappableEvenementInterface
#parameters:
#    unicaen.evenement.evenement_entity_map:
#        etudiant: 'App\Entity\Etudiant'

doc/association.md

0 → 100644
+40 −0
Changes for doc/association.md: 40 added lines, 0 removed lines.
Original line number Diff line number Diff line
# unicaen/evenement-bundle

[WIP] en cours de test -> l'objectif est de fournir pour toutes entités associées, une liste d'événement la concernant.


## Association Evenement <-> Entity


Afin de pouvoir liéer un événement à des entités (ie: étudiant, utilisateur ...)

### Type d'association

Les types d'associations permettent de discréminer les entités dans la table evenement_association et ansi faire le mapping entre un evenement et un type d'entité
Par exemple, si l'on souhaite faire un liens entre des Etudiant et des événements, il faut creer un type d'association comme si dessous :

/evenement/association/type (POST)
```json
{
  "code": "etudiant",
  "libelle": "Étudiant",
  "description": "Évènement <-> Étudiant"
}
```

### Associé l'événement à une entité


### Interface MappableEvenementInterface

L'interface [MappableEvenementInterface.php](../src/Model/MappableEvenementInterface.php) permet de gerer le mapping entre notre entité Etudiant et les événements eux même
Le listener [MappableEvenementListener.php](../src/EventListener/MappableEvenementListener.php) gére lors du chargement d'un étudiant le mapping avec les événements qui lui sont associées.

Ces associations reposent sur le fait que l'on lie dans la configuration les associations de type 'etudiant' à la classe Etudiant :

```
parameters:
    unicaen.evenement.evenement_entity_map:
        etudiant: 'App\Entity\Etudiant'
```
+21 −0
Changes for doc/configuration.md: 21 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -32,6 +32,27 @@ Voici la liste des paramétres que l'on peut définir avec leurs valeurs par dé
- max_time_execution doit être afiné en fonction du paramétre php max_execution_time et du délais entre les crons :
Pour un traitement des événements toutes les 5min, il est recommandé de mêtre un max_time à 3

## Priviléges / Routes 

Chaque entités à une route nommée. Il est possible de les générer via les commandes 

```
unicaen:privilege:sync-routes 
unicaen:privilege:sync-routes --assign
```

!!! cette méthode génera les priviléges sous la forme evenement-voir pour les GET, evenement-creer pour les POST ...
Celà est valide pour presque toutes les routes sauf les cas particuliers suivant :

```
route: evenement-traiter, privileges: evenement_instance_traiter
route: evenement-reinitialiser, privileges: evenement_instance_traiter
```

Le répertoire data propose un ensemble de données utilisable par `unicaen:referentiel:sync`.
Il est déconseillé de les placer directement dans le repertoire du référentiel, mais plutot dans un sous-répertoire. 
S'il faut certe les utiliser 1 par 1 via la commande, mais celà évite de réimporter par erreur certaines association ROlE <-> PRIVILEGE qui aurais été modifier par un utilisateur

## Handlers

Le traitement des événements repose sur un système de "Handlers", c'est-à-dire de classe php qui s'occupe du traitement d'un événement
+23 −0
Changes for doc/data/10-unicaen_evenement-categorie_privilege.yaml: 23 added lines, 0 removed lines.
Original line number Diff line number Diff line
##### unicaen/evenement-bundle #####
# Exemple de référentiel pour unicaen/referentiel-bundle :
# Création des catégories de priviléges
#
# Usages : A copier dans data/referentiel
# Adapté éventuellement (ie : ordre, udpate_always ...)
# php bin/console unicaen:referentiel:sync 10_unicaen_evenement_categorie_privilege.yaml --dry-run
#####

synchronisation:
    entity: Unicaen\Privilege\Entity\PrivilegeCategorie
    identifier: code

    fields:
#        libelle: create_only
#        ordre: create_only
        libelle: update_always
        ordre: update_always

    missing_from_file: keep

items:
   - { code: evenement, libelle: Gestion des évenements, ordre: 1002}
Loading