vendor/mrpix/shopping-city/src/Storefront/Controller/SellerController.php line 58

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Mrpix\ShoppingCity\Storefront\Controller;
  3. use Mrpix\ShoppingCity\Services\Filter;
  4. use Mrpix\ShoppingCity\Services\Seller;
  5. use Shopware\Core\System\SalesChannel\SalesChannelContext;
  6. use Shopware\Storefront\Controller\StorefrontController;
  7. use Shopware\Storefront\Page\Navigation\NavigationPageLoaderInterface;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. /**
  12.  * @Route(defaults={"_routeScope"={"storefront"}})
  13.  */
  14. class SellerController extends StorefrontController
  15. {
  16.     private Filter $filterService;
  17.     private Seller $sellerService;
  18.     private NavigationPageLoaderInterface $navigationPageLoader;
  19.     public function __construct(Filter $filterServiceSeller $sellerServiceNavigationPageLoaderInterface $navigationPageLoader)
  20.     {
  21.         $this->filterService $filterService;
  22.         $this->sellerService $sellerService;
  23.         $this->navigationPageLoader $navigationPageLoader;
  24.     }
  25.     /**
  26.      * @Route("/marketplace", name="frontend.marketplace.sellers", methods={"GET"}, defaults={"XmlHttpRequest"=true})
  27.      */
  28.     public function listSellers(Request $requestSalesChannelContext $context): Response
  29.     {
  30.         $properties $request->query->get('properties');
  31.         $properties $this->getFilter($properties);
  32.         $page $request->query->get('p');
  33.         $page $page === null : (int) $page;
  34.         $data $this->navigationPageLoader->load($request$context);
  35.         $sellers $this->sellerService->getSellers($context->getContext(), $properties$page);
  36.         return $this->renderStorefront('@MrpixShoppingCity/storefront/page/seller/list.html.twig', [
  37.             'sellers' => $sellers,
  38.             'limit' => $this->sellerService->getSellersLimit(),
  39.             'page' => $data,
  40.             'filters' => $this->filterService->getAvailableFilters($context->getContext()),
  41.         ]);
  42.     }
  43.     /**
  44.      * @Route("/marketplace/{storeSlug}", name="frontend.marketplace.seller.profile.detail", methods={"GET"})
  45.      */
  46.     public function sellerProfile(string $storeSlugRequest $requestSalesChannelContext $context): Response
  47.     {
  48.         $data $this->navigationPageLoader->load($request$context);
  49.         $seller $this->sellerService->getSeller($storeSlug$context->getContext());
  50.         $similarSellers $this->sellerService->getSimilarSellers($seller$context->getContext());
  51.         return $this->renderStorefront('@MrpixShoppingCity/storefront/page/seller/profile.html.twig', [
  52.             'page' => $data,
  53.             'profileDetails' => $seller,
  54.             'similarSellers' => $similarSellers,
  55.             'currency' => $context->getCurrency(),
  56.             /** @phpstan-ignore-next-line */
  57.             'environment' => $this->container->getParameter('kernel.environment'),
  58.         ]);
  59.     }
  60.     private function getFilter(?string $filter): array
  61.     {
  62.         if ($filter === null) {
  63.             return [];
  64.         }
  65.         return explode('|'$filter);
  66.     }
  67. }