src/Controller/ArticleController.php line 79

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Builder\ArticleBuilder;
  4. use App\Builder\FamilyBuilder;
  5. use App\Entity\Article;
  6. use App\Entity\Catalog;
  7. use App\Entity\Family;
  8. use App\Entity\User;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use Knp\Component\Pager\PaginatorInterface;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. class ArticleController extends AbstractController
  16. {
  17.     private EntityManagerInterface $entityManager;
  18.     private ArticleBuilder $articleBuilder;
  19.     private FamilyBuilder $familyBuilder;
  20.     public function __construct(EntityManagerInterface $entityManagerArticleBuilder $articleBuilderFamilyBuilder $familyBuilder)
  21.     {
  22.         $this->entityManager $entityManager;
  23.         $this->articleBuilder $articleBuilder;
  24.         $this->familyBuilder $familyBuilder;
  25.     }
  26.     /**
  27.      * @Route("/home", name="home")
  28.      * @Route("/{prePackaged}/home", name="home_prePackaged")
  29.      */
  30.     public function home(PaginatorInterface $paginatorRequest $request, ?string $prePackaged): Response
  31.     {
  32.         $catalog null;
  33.         $customerId null;
  34.         if ($prePackaged == 'prePackaged') {
  35.             $prePackaged true;
  36.         } else {
  37.             $prePackaged false;
  38.         }
  39.         if ($this->getUser()) {
  40.             $customerId $this->getUser()->getCustomerId();
  41.             $catalog $this->entityManager->getRepository(Catalog::class)->findOneBy(['customer' => $customerId]);
  42.         } else {
  43.             $defaultUser $this->entityManager->getRepository(User::class)->findOneBy(['defaultUser' => true]);
  44.             if ($defaultUser) {
  45.                 $customerId $defaultUser->getCustomerId();
  46.                 $catalog $this->entityManager->getRepository(Catalog::class)->findOneBy(['customer' => $customerId]);
  47.             }
  48.         }
  49.         if ($request->query->get("search")) {
  50.             $articles $this->entityManager->getRepository(Article::class)->getArticleSearch($request->query->get('search'), $request->getLocale(), $catalog$customerId$prePackaged);
  51.         } else {
  52.             $articles $this->entityManager->getRepository(Article::class)->getArticles($request->getLocale(), $catalog$customerId$prePackaged);
  53.         }
  54.         $articlePagination $paginator->paginate(
  55.             $this->articleBuilder->getArticleUser($request->getLocale(), $articles$this->getUser()),
  56.             $request->query->getInt('page'1),
  57.             9
  58.         );
  59.         return $this->render('article/home.html.twig', [
  60.             "articlePagination" => $articlePagination,
  61.         ]);
  62.     }
  63.     /**
  64.      * @Route("/article/{id}", name="article")
  65.      * @Route("/{prePackaged}/article/{id}", name="article_prePackaged")
  66.      */
  67.     public function article(Article $articleRequest $request, ?string $prePackaged): Response
  68.     {
  69.         $customer null;
  70.         if ($this->getUser()) {
  71.             $customer $this->getUser()->getCustomerId();
  72.         } else {
  73.             $defaultUser $this->entityManager->getRepository(User::class)->findOneBy(['defaultUser' => true]);
  74.             if ($defaultUser) {
  75.                 $customer $defaultUser->getCustomerId();
  76.             }
  77.         }
  78.         $catalog $this->entityManager->getRepository(Catalog::class)->findOneBy(['customer' => $customer]);
  79.         $verification $this->entityManager->getRepository(Catalog::class)->findOneBy(['article' => $article"customer" => $customer]);
  80.         if ($article->getIsActive() && ($verification && $catalog) || ($verification == null && $catalog == null)) {
  81.             return $this->render('article/article.html.twig', [
  82.                 'article' => $this->articleBuilder->getArticleDetailsUser($request->getLocale(), $article$this->getUser()),
  83.             ]);
  84.         }
  85.         return $this->redirectToRoute('home');
  86.     }
  87. }