src/Component/Core/Vendor/EventListener/ProductListingListener.php line 22

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace BitBag\OpenMarketplace\Component\Core\Vendor\EventListener;
  4. use BitBag\OpenMarketplace\Component\Core\Common\Helper\FlashHelperInterface;
  5. use BitBag\OpenMarketplace\Component\Core\Vendor\Exception\OrganizationHasNoVendorContextException;
  6. use BitBag\OpenMarketplace\Component\SellerPlan\Checker\SellerPlanCheckerInterface;
  7. use Pagerfanta\Pagerfanta;
  8. use Sylius\Bundle\ResourceBundle\Event\ResourceControllerEvent;
  9. use Sylius\Bundle\ResourceBundle\Grid\View\ResourceGridView;
  10. final class ProductListingListener
  11. {
  12.     public function __construct(
  13.         private SellerPlanCheckerInterface $sellerPlanChecker,
  14.         private FlashHelperInterface $flashHelper,
  15.     ) {
  16.     }
  17.     public function __invoke(ResourceControllerEvent $event): void
  18.     {
  19.         try {
  20.             if (true === $this->sellerPlanChecker->hasValidSubscription()) {
  21.                 return;
  22.             }
  23.         } catch (OrganizationHasNoVendorContextException) {
  24.             return;
  25.         }
  26.         $grid $event->getSubject();
  27.         if (!$grid instanceof ResourceGridView) {
  28.             return;
  29.         }
  30.         $pagerfanta $grid->getData();
  31.         if (!$pagerfanta instanceof Pagerfanta || === $pagerfanta->count()) {
  32.             return;
  33.         }
  34.         $this->flashHelper->addFlashMessage(
  35.             FlashHelperInterface::INFO,
  36.             'app.ui.draft_no_plan',
  37.             ['%productListings%' => $pagerfanta->count()],
  38.         );
  39.     }
  40. }