symfony-notifications/README.md

90 lines
2.5 KiB
Markdown
Raw Permalink Normal View History

2019-03-01 13:37:53 +01:00
Notifications bundle
===
Ajout de notifications pour les users (backend seulement)
2019-03-01 14:20:14 +01:00
## Restrictions
Votre classe User doit absoluement être dans le namespace \App\Entity et s'appeler User, soit etre
2019-03-01 16:02:12 +01:00
`\App\Entity\User\`.
2019-03-01 14:20:14 +01:00
2019-03-01 13:37:53 +01:00
## Routes:
Pour installer les routes, ajouter ceci:
```yaml
notifications:
prefix: '/notifications'
resource: '@NotificationsBundle/Resources/config/routes.yaml'
```
2019-03-01 16:02:12 +01:00
à votre `config/routes.yaml`
Il existe aussi le fichier `routes_dev.yaml` qui ajoute le endpoint à `/add-dev` qui permet
d'ajouter une notification de test à l'utilisateur courant.
2019-03-01 13:37:53 +01:00
2019-03-01 14:20:14 +01:00
Pour créer des notifs, il faut utiliser le service. Effectivement on ne veut pas permettre
aux clients de spammer les routes de notifications ou lire les notifs de toute le monde.
Vous pouvez ajouter des routes dans votre application pour plus de flexibilité.
2019-03-01 13:37:53 +01:00
2019-03-01 16:02:12 +01:00
* **GET** /get
2019-03-01 13:37:53 +01:00
2019-03-01 14:20:14 +01:00
Récupère toutes les notifications de l'utilisateur courant.
2019-03-01 16:02:12 +01:00
* **DELETE** /delete/{id}
Supprime la notification à l'id indiqué si elle appartient à l'user courant.
* **POST** /mark-seen/{id}
Marque la notifiquation à l'id indiqué comme lue si elle appartient à l'user courant.
2019-03-01 14:20:14 +01:00
## Service
La classe est `NotificationsService`. Toutes les méthodes sont commentées, veuillez vous
référer aux comentaires sur les méthodes plutot que ce README qui ne fait office que de
listing de features.
Méthdodes:
* notifyUsers:
* Ajoute des notifications aux users
* getForUser
* Récupère toutes les notifications pour un user, sous format d'entité ou array
TODO: ajouter des flags pour filtrer
* toArray
* Convertit un objet Notification en Array
* duplicateNotification
* Clone une notif (pour notifier un batch d'user)
Normalement il n'y a aucun besoin d'utiliser cette méthode en dehors du bundle.
## Entités
2019-03-01 16:41:15 +01:00
* Notification: représente une notification pour un seul utilisateur
## Exemple
Exemple pour notifier des users:
```php
$notif = new Notification();
$notif->setTitle("Bonjour");
$notif->setDescription("Skippy vous attend dans son antre");
$notif->setData("le_nom_de_la_route_en_react");
$users = [$user]; // Peut contenir plein d'users
$notifssrv->notifyUsers($users, $notif);
```
Pas besoin de persist la notification créée, le service se charge de perist tous les clones
créés pour chacun des users.
Les notifications devront être retouvées côté client avec le endpoint `/get`, qui n'est
qu'une interface pour:
```php
$notifssrv->getForUser($this->getUser());
```