Commit d6916f41 authored by Thibaut Vallee's avatar Thibaut Vallee
Browse files

Mapping

parent f8d7655b
Loading
Loading
Loading
Loading
+4 −0
Changes for CHANGELOG.md: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
#CHANGELOG 
============
1.4.0 (12/11/2026)
------------------
- Mapping entre les événements et les entités

1.3.0 (30/10/2026)
------------------
- Récursion
+16 −6
Changes for api/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 api/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'

api/doc/association.md

0 → 100644
+40 −0
Changes for api/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 api/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
Loading