src/EventListener/ChannelListener.php line 32

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\EventListener;
  4. use App\Entity\Channel\Channel;
  5. use App\Repository\Channel\ChannelRepository;
  6. use Sylius\Bundle\ResourceBundle\Event\ResourceControllerEvent;
  7. final class ChannelListener
  8. {
  9.     public function __construct(private ChannelRepository $channelRepository)
  10.     {
  11.     }
  12.     public function preCreate(ResourceControllerEvent $event): void
  13.     {
  14.         /** @var Channel $channel */
  15.         $channel $event->getSubject();
  16.         if ($channel->isDefaultChannel()) {
  17.             $channels $this->channelRepository->findAll();
  18.             /** @var Channel $otherChannel */
  19.             foreach ($channels as $otherChannel) {
  20.                 if ($otherChannel->getCode() !== $channel->getCode() && $otherChannel->isDefaultChannel()) {
  21.                     $otherChannel->setIsDefaultChannel(false);
  22.                 }
  23.             }
  24.         }
  25.     }
  26.     public function preUpdate(ResourceControllerEvent $event): void
  27.     {
  28.         /** @var Channel $channel */
  29.         $channel $event->getSubject();
  30.         if ($channel->isDefaultChannel()) {
  31.             $channels $this->channelRepository->findAll();
  32.             /** @var Channel $otherChannel */
  33.             foreach ($channels as $otherChannel) {
  34.                 if ($otherChannel->getCode() !== $channel->getCode() && $otherChannel->isDefaultChannel()) {
  35.                     $otherChannel->setIsDefaultChannel(false);
  36.                 }
  37.             }
  38.         }
  39.     }
  40. }