src/Controller/Marketplace/VisioEventController.php line 34

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Marketplace;
  3. use App\Entity\MarketplaceCategory;
  4. use App\Entity\Workshop;
  5. use App\Form\Marketplace\SearchCategoryType;
  6. use App\Form\Marketplace\SearchType;
  7. use App\Repository\MarketplaceCategoryRepository;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Knp\Component\Pager\PaginatorInterface;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. use Symfony\Component\String\Slugger\SluggerInterface;
  16. class VisioEventController extends AbstractController
  17. {
  18.     /**
  19.      * @var EntityManagerInterface
  20.      */
  21.     private $em;
  22.     public function __construct(EntityManagerInterface $em)
  23.     {
  24.         $this->em $em;
  25.     }
  26.     /**
  27.      * @Route("/atelier-visio", name="app_visio_event")
  28.      */
  29.     public function visioEvents(Request $request): Response
  30.     {
  31.         $form $this->createForm(SearchType::class, null, [
  32.             'action' => $this->generateUrl('marketplace_app_visio_events_category'),
  33.             'method' => 'GET'
  34.             
  35.         ]);
  36.         
  37.         $form->handleRequest($request);
  38.         return $this->render('marketplace/visio_event/index.html.twig', [
  39.             'searchForm' => $form->createView()
  40.         ]);
  41.     }
  42.      /**
  43.      * @Route("/atelier-visio/categories/", name="app_visio_events_category")
  44.      */
  45.     public function visioEventsFromCategory(Request $request): Response
  46.     {
  47.         $marketplaceCategs = [];
  48.         $data $request->query->get('search');
  49.         // $marketplaceCategs = $this->em->getRepository(MarketplaceCategory::class)->findBy([
  50.         //     'family' => $data['family']
  51.         // ]);
  52.         $form $this->createForm(SearchType::class, $data, ['categorySearch' => true'method' => 'GET']);
  53.         $form->handleRequest($request);
  54.         if ($form->isSubmitted() && $form->isValid()) {
  55.             $data $form->getData();
  56.             $family $data['family'];
  57.             $marketplaceCategs $this->em->getRepository(MarketplaceCategory::class)->findVirtualCategories($family);
  58.         }
  59.         return $this->render('marketplace/visio_event/category_search_result.html.twig', [
  60.             'categories' => $marketplaceCategs,
  61.             'searchForm' => $form->createView()
  62.         ]);
  63.     }
  64.     /**
  65.      * @Route("/atelier-visio/{marketplaceCategoryName}",
  66.      * name="app_visio_events_category_list",
  67.      * requirements={
  68.      *         "marketplaceCategoryName"="[^\/]+", 
  69.      * })
  70.      */
  71.     public function collectiveEventsListFromCategory(Request $requestPaginatorInterface $paginatorSluggerInterface $slugger): Response
  72.     {
  73.         if (!empty($request->query->get('mc'))) {
  74.             $category $this->em->getRepository(MarketplaceCategory::class)->find((int)$request->query->get('mc')) ;
  75.             if (!$category) {
  76.                 throw new NotFoundHttpException("Not found");
  77.             }
  78.             $data= [
  79.                 'marketplaceCategory' => $category->getId(),
  80.                 'marketplaceFamily' => $category->getFamily()
  81.             ];
  82.         }elseif (!empty($request->query->get('search_category'))) {
  83.             $category $this->em->getRepository(MarketplaceCategory::class)->find((int)$request->query->get('search_category')['marketplaceCategory']) ;
  84.             if (!$category) {
  85.                 throw new NotFoundHttpException("Not found");
  86.             }
  87.             $data= [
  88.                 'marketplaceCategory' => $category->getId(),
  89.                 'marketplaceFamily' => $category->getFamily()
  90.             ];
  91.         }
  92.         $form $this->createForm(SearchCategoryType::class, $data, ['locationSearch' => true'method' => 'GET''type' => 'virtual']);
  93.         $form->handleRequest($request);
  94.         if ($form->isSubmitted() && $form->isValid()) {
  95.             $data $form->getData();
  96.             $category $this->em->getRepository(MarketplaceCategory::class)->find($data['marketplaceCategory']);
  97.             unset($data['marketplaceFamily']);
  98.             $slug $slugger->slug($category->getName());
  99.             // $form->setAction($this->generateUrl('marketplace_app_collective_events_category_list', ['marketplaceCategoryName' => $category->getName()] ));
  100.             return $this->redirectToRoute('marketplace_app_visio_events_category_list', ['marketplaceCategoryName' => strtolower($slug), 'search_category' => $data]);
  101.         }
  102.         try {
  103.             // $workshops = $this->em->getRepository(Workshop::class)->findBy([
  104.             //     'marketplaceCategory' => $category,
  105.             //     'isVirtual' => false,
  106.             // ]) ?? [];
  107.             ;
  108.             $params = [
  109.                 'marketplaceIsDisplay' => true,
  110.                 'isVirtual' => true,
  111.                 'marketplaceCategory' => $data['marketplaceCategory']
  112.             ];
  113.             $qb $this->em->getRepository(Workshop::class)->findMarketplaceWorkshopsQuery($params);
  114.             $pagination $paginator->paginate(
  115.                 $qb->getQuery(),
  116.                 $request->query->getInt('page'1),
  117.                 $request->query->getInt('count'10)
  118.             );
  119.         } catch (\Throwable $th) {
  120.             //throw $th;
  121.         }
  122.         return $this->render('marketplace/visio_event/list_search_result.html.twig', [
  123.             'searchForm' => $form->createView(),
  124.             'category' => $category,
  125.             'workshops' => $pagination,
  126.         ]);
  127.     }
  128.     
  129. }