UniciteCollections.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. namespace App\Service;
  3. use App\Repository\GenreRepository;
  4. use App\Repository\RealisateurRepository;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use App\Entity\Film;
  7. /**
  8. * Faire des recherches de films
  9. */
  10. class UniciteCollections
  11. {
  12. /**
  13. * Search constructor.
  14. * @param EntityManagerInterface $em
  15. */
  16. public function __construct(
  17. protected RealisateurRepository $repoReal,
  18. protected GenreRepository $repoGenre
  19. )
  20. {
  21. }
  22. /**
  23. * @param \App\Entity\Film $film
  24. * @return \App\Entity\Film
  25. */
  26. public function assureUniciteCollections(Film $film): Film
  27. {
  28. $film = $this->checkRealisateurs($film);
  29. $film = $this->checkGenres($film);
  30. return $film;
  31. }
  32. /**
  33. * @param \App\Entity\Film $film
  34. * @return \App\Entity\Film
  35. */
  36. protected function checkRealisateurs(Film $film): Film
  37. {
  38. $realisateurs = $film->getRealisateurs();
  39. foreach ($realisateurs as $realisateur)
  40. {
  41. if ($realisateur->getId() === null)
  42. {
  43. $recherche = $this->repoReal->findOneBy(array('nomComplet'=>$realisateur->getNomComplet()));
  44. if ($recherche !== null)
  45. {
  46. $film->removeRealisateur($realisateur);
  47. $film->addRealisateur($recherche);
  48. }
  49. }
  50. }
  51. return $film;
  52. }
  53. /**
  54. * @param \App\Entity\Film $film
  55. * @return \App\Entity\Film
  56. */
  57. protected function checkGenres(Film $film): Film
  58. {
  59. $genres = $film->getGenres();
  60. foreach ($genres as $genre)
  61. {
  62. if ($genre->getId() === null)
  63. {
  64. $recherche = $this->repoGenre->findOneBy(array('name'=>$genre->getName()));
  65. if ($recherche !== null)
  66. {
  67. $film->removeGenre($genre);
  68. $film->addGenre($recherche);
  69. }
  70. }
  71. }
  72. return $film;
  73. }
  74. }