src/Controller/CategoryController.php line 41

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Builder\ArticleBuilder;
  4. use App\Builder\CategoryBuilder;
  5. use App\Entity\Article;
  6. use App\Entity\Catalog;
  7. use App\Entity\Category;
  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 CategoryController extends AbstractController
  16. {
  17.     private EntityManagerInterface $entityManager;
  18.     private CategoryBuilder $categoryBuilder;
  19.     private ArticleBuilder $articleBuilder;
  20.     public function __construct(EntityManagerInterface $entityManagerArticleBuilder $articleBuilderCategoryBuilder $categoryBuilder)
  21.     {
  22.         $this->entityManager $entityManager;
  23.         $this->categoryBuilder $categoryBuilder;
  24.         $this->articleBuilder $articleBuilder;
  25.     }
  26.     /**
  27.      * @Route("/category/{id}", name="category")
  28.      * @Route("/{prePackaged}/category", name="category_prePackaged")
  29.      * @param Category $category
  30.      * @param PaginatorInterface $paginator
  31.      * @param Request $request
  32.      * @param string|null $prePackaged
  33.      * @return Response
  34.      */
  35.     public function category(Category $categoryPaginatorInterface $paginatorRequest $request, ?string $prePackaged): Response
  36.     {
  37.         $catalog null;
  38.         $customerId null;
  39.         if ($prePackaged == 'prePackaged') {
  40.             $prePackaged true;
  41.         } else {
  42.             $prePackaged false;
  43.         }
  44.         if ($this->getUser()) {
  45.             $customerId $this->getUser()->getCustomerId();
  46.             $catalog $this->entityManager->getRepository(Catalog::class)->findOneBy(['customer' => $customerId]);
  47.         } else {
  48.             $defaultUser $this->entityManager->getRepository(User::class)->findOneBy(['defaultUser' => true]);
  49.             if ($defaultUser) {
  50.                 $customerId $defaultUser->getCustomerId();
  51.                 $catalog $this->entityManager->getRepository(Catalog::class)->findOneBy(['customer' => $customerId]);
  52.             }
  53.         }
  54.         if ($request->query->get("search")) {
  55.             $articles $this->entityManager->getRepository(Article::class)->getArticleSearchCategory($request->query->get('search'), $category$request->getLocale(), $catalog$customerId$prePackaged);
  56.         } else {
  57.             $articles $this->entityManager->getRepository(Article::class)->getArticlesCategory($request->getLocale(), $category$catalog$customerId$prePackaged);
  58.         }
  59.         $articlePagination $paginator->paginate(
  60.             $this->articleBuilder->getArticleUser($request->getLocale(), $articles$this->getUser()),
  61.             $request->query->getInt('page'1),
  62.             12
  63.         );
  64.         return $this->render('article/home.html.twig', [
  65.             "articlePagination" => $articlePagination,
  66.             "category" => $this->categoryBuilder->getCategoryTraduction($request->getLocale(), $category),
  67.             "categorySelect" => $category,
  68.         ]);
  69.     }
  70. }