NoteListener.php 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. namespace App\Service;
  3. use App\Entity\Commentaire;
  4. use Doctrine\Bundle\DoctrineBundle\Attribute\AsDoctrineListener;
  5. use Doctrine\ORM\Event\PostPersistEventArgs;
  6. use Doctrine\ORM\Event\PostRemoveEventArgs;
  7. use Doctrine\ORM\Event\PostUpdateEventArgs;
  8. use Doctrine\ORM\Events;
  9. use Doctrine\Persistence\Event\LifecycleEventArgs;
  10. #[AsDoctrineListener(event: Events::postPersist)]
  11. #[AsDoctrineListener(event: Events::postUpdate)]
  12. #[AsDoctrineListener(event: Events::postRemove)]
  13. class NoteListener
  14. {
  15. public function __construct(protected NoteMoyenne $noteMoyenne)
  16. {
  17. }
  18. public function postPersist(PostPersistEventArgs $args): void
  19. {
  20. $this->calculer($args);
  21. }
  22. public function postUpdate (PostUpdateEventArgs $args): void
  23. {
  24. $this->calculer($args);
  25. }
  26. public function postRemove (PostRemoveEventArgs $args): void
  27. {
  28. $this->calculer($args);
  29. }
  30. private function calculer (LifecycleEventArgs $args): void
  31. {
  32. $entity = $args->getObject();
  33. if (!$entity instanceof Commentaire) {
  34. return;
  35. }
  36. $this->noteMoyenne->calculerMoyenne($entity->getFilm());
  37. }
  38. }