src/Controller/Product/Public/ProductController.php line 67

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Product\Public;
  3. use App\Entity\Contact;
  4. use App\Entity\Product\Product;
  5. use App\Entity\Product\ProductCategory;
  6. use App\Form\ContactType;
  7. use App\Repository\ArrayJsonRepository;
  8. use App\Repository\ConfigurationRepository;
  9. use App\Repository\Gallery\CollectionGalleryRepository;
  10. use App\Repository\ModuleInformationRepository;
  11. use App\Repository\Product\ProductCategoryRepository;
  12. use App\Repository\Product\ProductConfigRepository;
  13. use App\Repository\Product\ProductRepository;
  14. use App\Repository\Product\ProductSubCategoryRepository;
  15. use DateTime;
  16. use Doctrine\ORM\EntityManagerInterface;
  17. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  18. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  19. use Symfony\Component\HttpFoundation\Request;
  20. use Symfony\Component\HttpFoundation\Response;
  21. use Symfony\Component\Mailer\MailerInterface;
  22. use Symfony\Component\Routing\Annotation\Route;
  23. use Symfony\Component\Security\Core\Security;
  24. #[Route('/product')]
  25. class ProductController extends AbstractController
  26. {
  27.     #[Route('/'name'app_product')]
  28.     public function index(ConfigurationRepository $configurationRepositoryProductRepository $productRepositorySecurity $security,  ProductCategoryRepository $productCategoryRepositoryRequest $requestArrayJsonRepository $arrayJsonRepository): Response
  29.     {
  30.         $dynamicLinkArray $arrayJsonRepository->findOneBy(['name' => 'dynamic_link']);
  31.         if ($dynamicLinkArray == null) {
  32.             $dynamicLink null;
  33.         } else {
  34.             $dynamicLink $dynamicLinkArray->getContent() ?? null;
  35.         }
  36.         $config $configurationRepository->findOneBy([]);
  37.         $is_online $config->isIsOnline();
  38.         if ($is_online == true) {
  39.             if ($security->isGranted('ROLE_ADMIN')) {
  40.             } else {
  41.                 return $this->redirectToRoute('app_maintenance');
  42.             }
  43.         }
  44.         $categories $productCategoryRepository->findAll();
  45.         $products $productRepository->findBy(['is_activ' => true]);
  46.         $cat $request->get('cat');
  47.         if (isset($cat)) {
  48.             $products $productRepository->searchByCategory($cat);
  49.         }
  50.         $brand $request->get('brand');
  51.         if (isset($brand)) {
  52.             $products $productRepository->searchByBrand($brand);
  53.         }
  54.         return $this->render('product/public/index.html.twig', [
  55.             'products' => $products,
  56.             'categories' => $categories,
  57.             'dynamic_link' => $dynamicLink,
  58.         ]);
  59.     }
  60.     #[Route('/{slug}'name'app_product_show')]
  61.     public function show(ConfigurationRepository $configurationRepositoryProduct $productProductConfigRepository $productConfigRepositoryArrayJsonRepository $arrayJsonRepository): Response
  62.     {
  63.         $dynamicLinkArray $arrayJsonRepository->findOneBy(['name' => 'dynamic_link']);
  64.         if ($dynamicLinkArray == null) {
  65.             $dynamicLink null;
  66.         } else {
  67.             $dynamicLink $dynamicLinkArray->getContent() ?? null;
  68.         }
  69.         $productConfig $productConfigRepository->findOneBy([]);
  70.         $config $configurationRepository->findOneBy([]);
  71.         if (!isset($collection)) {
  72.             $collection false;
  73.         }
  74.         if ($product->getProductImages() == null) {
  75.             $metaImg $config->getMetaImgDefault();
  76.         } else {
  77.             $metaImg $config->getWebsiteUrl() .  "uploads/" $product->getProductImages()[0]->getImage()->getName();
  78.         }
  79.         $similars $product->getSimilarToProducts();
  80.         $products = [];
  81.         foreach ($similars as $similar) {
  82.             $products[] = $similar->getProduct();
  83.         }
  84.         $allCategories $product->getCategories();
  85.         $leafCategories $allCategories->filter(function (ProductCategory $category) {
  86.             return $category->getProductCategories()->isEmpty();
  87.         });
  88.         return $this->render('product/public/show.html.twig', [
  89.             'product' => $product,
  90.             'productConfig' => $productConfig,
  91.             'metaImg' => $metaImg,
  92.             'products' => $products,
  93.             'categories' => $leafCategories,
  94.             'dynamicLink' => $dynamicLink,
  95.         ]);
  96.     }
  97. }