src/Controller/Marketplace/CollectiveEventsController.php line 42

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Marketplace;
  3. use App\Entity\MarketplaceCategory;
  4. use App\Entity\Seo;
  5. use App\Entity\Workshop;
  6. use App\Form\Marketplace\SearchCategoryType;
  7. use App\Form\Marketplace\SearchType;
  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 CollectiveEventsController 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("/", name="app_home")
  28.      */
  29.     public function index(): Response
  30.     {
  31.         return $this->redirectToRoute('marketplace_app_collective_events');
  32.     }
  33.     /**
  34.      * @Route("/atelier-collectifs", name="app_collective_events")
  35.      */
  36.     public function collectiveEvents(Request $request): Response
  37.     {
  38.         $form $this->createForm(SearchType::class, null, [
  39.             'action' => $this->generateUrl('marketplace_app_collective_events_category'),
  40.             'method' => 'GET',
  41.             'locationSearch' => true
  42.             ]
  43.         );
  44.         $form->handleRequest($request);
  45.        
  46.         return $this->render('marketplace/collective_events/index.html.twig', [
  47.             'searchForm' => $form->createView()
  48.         ]);
  49.     }
  50.     /**
  51.      * @Route("/atelier-collectifs/categories", name="app_collective_events_category")
  52.      */
  53.     public function collectiveEventsFromCategory(Request $request): Response
  54.     {
  55.         $marketplaceCategs = [];
  56.         $data $request->query->get('search');
  57.         // $marketplaceCategs = $this->em->getRepository(MarketplaceCategory::class)->findBy([
  58.         //     'family' => $data['family']
  59.         // ]);
  60.         $town $data['town'];
  61.         $form $this->createForm(SearchType::class, $data, ['categorySearch' => true'locationSearch' => true'method' => 'GET']);
  62.         $form->handleRequest($request);
  63.         $marketplaceCategs = [];
  64.         if ($form->isSubmitted() && $form->isValid()) {
  65.             $data $form->getData();
  66.             $family $data['family'];
  67.             $marketplaceCategs $this->em->getRepository(MarketplaceCategory::class)->findCollectiveCategories($family);
  68.         }
  69.         return $this->render('marketplace/collective_events/category_search_result.html.twig', [
  70.             'categories' => $marketplaceCategs,
  71.             'searchForm' => $form->createView(),
  72.             'town' => $town
  73.         ]);
  74.     }
  75.     /**
  76.      * @Route("/atelier-collectifs/{marketplaceCategoryName}",
  77.      * name="app_collective_events_category_list",
  78.      * requirements={
  79.      *          "marketplaceCategoryName"="[^\/]+", 
  80.      * })
  81.      */
  82.     public function collectiveEventsListFromCategory(Request $requestPaginatorInterface $paginatorSluggerInterface $slugger): Response
  83.     {
  84.         if (!empty($request->query->get('mc'))) {
  85.             $category $this->em->getRepository(MarketplaceCategory::class)->find((int)$request->query->get('mc')) ;
  86.             if (!$category) {
  87.                 throw new NotFoundHttpException("Not found");
  88.             }
  89.             $data= [
  90.                 'marketplaceCategory' => $category->getId(),
  91.                 'marketplaceFamily' => $category->getFamily(),
  92.                 'town' => $request->query->get('t')
  93.             ];
  94.         }elseif (!empty($request->query->get('search_category'))) {
  95.             $category $this->em->getRepository(MarketplaceCategory::class)->find((int)$request->query->get('search_category')['marketplaceCategory']) ;
  96.             if (!$category) {
  97.                 throw new NotFoundHttpException("Not found");
  98.             }
  99.             $data= [
  100.                 'marketplaceCategory' => $category->getId(),
  101.                 'marketplaceFamily' => $category->getFamily()
  102.             ];
  103.         }
  104.         $form $this->createForm(SearchCategoryType::class, $data, [
  105.             'locationSearch' => true,
  106.             'method' => 'GET',
  107.         ]);
  108.         $form->handleRequest($request);
  109.         if ($form->isSubmitted() && $form->isValid()) {
  110.             $data $form->getData();
  111.             $category $this->em->getRepository(MarketplaceCategory::class)->find($data['marketplaceCategory']);
  112.             unset($data['marketplaceFamily']);
  113.             $slug $slugger->slug($category->getName());
  114.             // $form->setAction($this->generateUrl('marketplace_app_collective_events_category_list', ['marketplaceCategoryName' => $category->getName()] ));
  115.             return $this->redirectToRoute('marketplace_app_collective_events_category_list', ['marketplaceCategoryName' => strtolower($slug), 'search_category' => $data]);
  116.         }
  117.         try {
  118.             // $workshops = $this->em->getRepository(Workshop::class)->findBy([
  119.             //     'marketplaceCategory' => $category,
  120.             //     'isVirtual' => false,
  121.             // ]) ?? [];
  122.             ;
  123.             $params = [
  124.                 'marketplaceIsDisplay' => true,
  125.                 'isVirtual' => false,
  126.                 'marketplaceCategory' => $data['marketplaceCategory']
  127.             ];
  128.             $qb $this->em->getRepository(Workshop::class)->findMarketplaceWorkshopsQuery($params);
  129.             $pagination $paginator->paginate(
  130.                 $qb->getQuery(),
  131.                 $request->query->getInt('page'1),
  132.                 $request->query->getInt('count'10)
  133.             );
  134.         } catch (\Throwable $th) {
  135.             //throw $th;
  136.         }
  137.         return $this->render('marketplace/collective_events/list_search_result.html.twig', [
  138.             'searchForm' => $form->createView(),
  139.             'category' => $category,
  140.             'workshops' => $pagination,
  141.         ]);
  142.     }
  143. }