FilmManager.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. namespace App\Service;
  3. use App\Entity\Film;
  4. use App\Entity\User;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Symfony\Bundle\SecurityBundle\Security;
  7. /**
  8. * Class FilmManager
  9. */
  10. class FilmManager {
  11. protected $user;
  12. public function __construct(
  13. protected EntityManagerInterface $em,
  14. protected UniciteCollections $uc,
  15. protected CommentaireManager $cm,
  16. protected MediaVideoManager $mvm,
  17. Security $security
  18. )
  19. {
  20. $this->user = $security->getUser();
  21. }
  22. public function addFilm (Film $film): void
  23. {
  24. $film->setAuthered($this->user);
  25. $film = $this->uc->assureUniciteCollections($film);
  26. $this->em->persist($film);
  27. $this->em->flush();
  28. }
  29. public function editFilm(Film $film): void
  30. {
  31. $film = $this->uc->assureUniciteCollections($film);
  32. $this->em->flush();
  33. }
  34. public function delFilm(Film $film): void
  35. {
  36. $commentaires = $film->getCommentaires();
  37. /** @var \App\Entity\Commentaire $commentaire */
  38. foreach($commentaires as $commentaire) {
  39. $this->cm->delCommentaire($commentaire);
  40. }
  41. $mediaVideos = $film->getMediaVideos();
  42. /** @var \App\Entity\MediaVideo $mediaVideos */
  43. foreach($mediaVideos as $media) {
  44. $this->mvm->delMediaVideo($media);
  45. }
  46. $this->em->remove($film);
  47. $this->em->flush();
  48. }
  49. public function inverseUserWhoSeen (Film $film): bool
  50. {
  51. if ($film->getUsersWhoSeen()->contains($this->user)) {
  52. $film->removeUserWhoSeen($this->user);
  53. } else {
  54. $film->addUserWhoSeen($this->user);
  55. }
  56. return $this->isSeen($film);
  57. }
  58. public function inverseUserWantToView (Film $film): bool
  59. {
  60. if ($film->getUsersWantToView()->contains($this->user)) {
  61. $film->removeUserWantToView($this->user);
  62. } else {
  63. $film->addUserWantToView($this->user);
  64. }
  65. return $this->isWantedToBeSeen($film);
  66. }
  67. public function isSeen(Film $film, ?User $user = null): bool
  68. {
  69. $user = $user ?: $this->user;
  70. return $film->getUsersWhoSeen()->contains($user);
  71. }
  72. public function isWantedToBeSeen(Film $film, ?User $user = null): bool
  73. {
  74. $user = $user ?: $this->user;
  75. return $film->getUsersWantToView()->contains($user);
  76. }
  77. }