FilmManager.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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. Security $security
  17. )
  18. {
  19. $this->user = $security->getUser();
  20. }
  21. public function addFilm (Film $film): void
  22. {
  23. $film->setAuthered($this->user);
  24. $film = $this->uc->assureUniciteCollections($film);
  25. $this->em->persist($film);
  26. $this->em->flush();
  27. }
  28. public function editFilm(Film $film): void
  29. {
  30. $film = $this->uc->assureUniciteCollections($film);
  31. $this->em->flush();
  32. }
  33. public function delFilm(Film $film): void
  34. {
  35. $commentaires = $film->getCommentaires();
  36. /** @var \App\Entity\Commentaire $commentaire */
  37. foreach($commentaires as $commentaire)
  38. {
  39. $this->cm->delCommentaire($commentaire);
  40. }
  41. $this->em->remove($film);
  42. $this->em->flush();
  43. }
  44. public function inverseUserWhoSeen (Film $film): bool
  45. {
  46. if ($film->getUsersWhoSeen()->contains($this->user)) {
  47. $film->removeUserWhoSeen($this->user);
  48. } else {
  49. $film->addUserWhoSeen($this->user);
  50. }
  51. return $this->isSeen($film);
  52. }
  53. public function inverseUserWantToView (Film $film): bool
  54. {
  55. if ($film->getUsersWantToView()->contains($this->user)) {
  56. $film->removeUserWantToView($this->user);
  57. } else {
  58. $film->addUserWantToView($this->user);
  59. }
  60. return $this->isWantedToBeSeen($film);
  61. }
  62. public function isSeen(Film $film, User $user = null): bool
  63. {
  64. $user = $user ?: $this->user;
  65. return $film->getUsersWhoSeen()->contains($user);
  66. }
  67. public function isWantedToBeSeen(Film $film, User $user = null): bool
  68. {
  69. $user = $user ?: $this->user;
  70. return $film->getUsersWantToView()->contains($user);
  71. }
  72. }