123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- <?php
- namespace App\Service;
- use App\Entity\Film;
- use App\Entity\User;
- use Doctrine\ORM\EntityManagerInterface;
- use Symfony\Bundle\SecurityBundle\Security;
- /**
- * Class FilmManager
- */
- class FilmManager {
- protected $user;
- public function __construct(
- protected EntityManagerInterface $em,
- protected UniciteCollections $uc,
- protected CommentaireManager $cm,
- protected MediaVideoManager $mvm,
- Security $security
- )
- {
- $this->user = $security->getUser();
- }
- public function addFilm (Film $film): void
- {
- $film->setAuthered($this->user);
- $film = $this->uc->assureUniciteCollections($film);
- $this->em->persist($film);
- $this->em->flush();
- }
- public function editFilm(Film $film): void
- {
- $film = $this->uc->assureUniciteCollections($film);
- $this->em->flush();
- }
- public function delFilm(Film $film): void
- {
- $commentaires = $film->getCommentaires();
- /** @var \App\Entity\Commentaire $commentaire */
- foreach($commentaires as $commentaire) {
- $this->cm->delCommentaire($commentaire);
- }
- $mediaVideos = $film->getMediaVideos();
- /** @var \App\Entity\MediaVideo $mediaVideos */
- foreach($mediaVideos as $media) {
- $this->mvm->delMediaVideo($media);
- }
- $this->em->remove($film);
- $this->em->flush();
- }
- public function inverseUserWhoSeen (Film $film): bool
- {
- if ($film->getUsersWhoSeen()->contains($this->user)) {
- $film->removeUserWhoSeen($this->user);
- } else {
- $film->addUserWhoSeen($this->user);
- }
- return $this->isSeen($film);
- }
- public function inverseUserWantToView (Film $film): bool
- {
- if ($film->getUsersWantToView()->contains($this->user)) {
- $film->removeUserWantToView($this->user);
- } else {
- $film->addUserWantToView($this->user);
- }
- return $this->isWantedToBeSeen($film);
- }
- public function isSeen(Film $film, ?User $user = null): bool
- {
- $user = $user ?: $this->user;
- return $film->getUsersWhoSeen()->contains($user);
- }
- public function isWantedToBeSeen(Film $film, ?User $user = null): bool
- {
- $user = $user ?: $this->user;
- return $film->getUsersWantToView()->contains($user);
- }
- }
|