<?php
declare(strict_types=1);
namespace BitBag\OpenMarketplace\Component\Core\Vendor\EventListener;
use BitBag\OpenMarketplace\Component\Core\Common\Helper\FlashHelperInterface;
use BitBag\OpenMarketplace\Component\Core\Vendor\Exception\OrganizationHasNoVendorContextException;
use BitBag\OpenMarketplace\Component\SellerPlan\Checker\SellerPlanCheckerInterface;
use Pagerfanta\Pagerfanta;
use Sylius\Bundle\ResourceBundle\Event\ResourceControllerEvent;
use Sylius\Bundle\ResourceBundle\Grid\View\ResourceGridView;
final class ProductListingListener
{
public function __construct(
private SellerPlanCheckerInterface $sellerPlanChecker,
private FlashHelperInterface $flashHelper,
) {
}
public function __invoke(ResourceControllerEvent $event): void
{
try {
if (true === $this->sellerPlanChecker->hasValidSubscription()) {
return;
}
} catch (OrganizationHasNoVendorContextException) {
return;
}
$grid = $event->getSubject();
if (!$grid instanceof ResourceGridView) {
return;
}
$pagerfanta = $grid->getData();
if (!$pagerfanta instanceof Pagerfanta || 0 === $pagerfanta->count()) {
return;
}
$this->flashHelper->addFlashMessage(
FlashHelperInterface::INFO,
'app.ui.draft_no_plan',
['%productListings%' => $pagerfanta->count()],
);
}
}