src/Controller/RecoController.php line 17

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Article;
  4. use App\Entity\User;
  5. use App\Entity\ListesFavoris;
  6. use App\Entity\Recommandation;
  7. use App\Entity\Category;
  8. use App\Entity\SousCategory;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Doctrine\ORM\EntityManagerInterface;
  12. class RecoController extends AbstractController
  13. {    
  14.     public function index(EntityManagerInterface $entityManager): Response
  15.     {
  16.         $category $entityManager->getRepository(Category::class)->findAll();
  17.         $sousCategory $entityManager->getRepository(SousCategory::class)->findAll();
  18.         /** @var User $user */
  19.         $user $this->getUser();
  20.         
  21.         $user != null ?  $userId $user->getEmail() : $userId 'mostpopular@ac-nancy-metz.fr';
  22.         $clustersUser $entityManager->getRepository(Recommandation::class)->findClustersByUserId($userId);
  23.         $size count($clustersUser);
  24.         $clustersPopular = array();
  25.         if($size 4) {
  26.             $clustersPopular $entityManager
  27.             ->getRepository(Recommandation::class)
  28.             ->findClustersByUserId('mostpopular@ac-nancy-metz.fr');
  29.         }
  30.         $articlesRecommandes = array();
  31.         foreach($clustersUser as $clusterId){
  32.             $r $entityManager->getRepository(Recommandation::class)->findByClusterIdAndUserId($clusterId,$userId);
  33.             $articles = array();
  34.             foreach($r as $reco){
  35.                 $article $entityManager->getRepository(Article::class)->findOneByURL($reco->getUrl());
  36.                 $articles[] = $article;
  37.             }
  38.             $articlesRecommandes[] = $articles;
  39.         }
  40.         
  41.         foreach($clustersPopular as $clusterId){
  42.             $r $entityManager->getRepository(Recommandation::class)->findByClusterIdAndUserId($clusterId,'mostpopular@ac-nancy-metz.fr');
  43.             $articles = array();
  44.             foreach($r as $reco){
  45.                 $article $entityManager->getRepository(Article::class)->findOneByURL($reco->getUrl());
  46.                 $articles[] = $article;
  47.             }
  48.             //vérifier que le chemin mostpopular n'existe pas déjà dans les recommandations
  49.             if(!in_array($articles,$articlesRecommandes)){
  50.                 $articlesRecommandes[] = $articles;
  51.             }
  52.             if(count($articlesRecommandes) == 4){
  53.                 break;
  54.             }
  55.         }
  56.         $articlesFavsIds = [];
  57.         if($user != null){
  58.             $listeFavs $entityManager->getRepository(ListesFavoris::class)->findByUser($user);
  59.             // $articlesFavsIds = [];
  60.             foreach($listeFavs as $fav){
  61.                 $articlesFavs $fav->getArticlesFavoris();
  62.                 foreach($articlesFavs as $articleFav){
  63.                     $articlesFavsIds [] =  $articleFav->getArticle()->getId();
  64.                 }
  65.             }
  66.         }
  67.         // $favs = $this->getFavorites($user);
  68.         return $this->render('recommandation/index.html.twig', [
  69.             'controller_name' => 'RecoController'
  70.             'articlesRecos' => $articlesRecommandes,
  71.             'favs' => $articlesFavsIds,
  72.             'category'=> $category,
  73.             'sousCategory'=> $sousCategory,
  74.         ]);
  75.     }
  76. }