src/EventSubscriber/RotationServiceSubscriber.php line 30

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Event\Profile\ConfirmationRequest\ProfileModerationRejected;
  4. use App\Event\Profile\ProfileDataChanged;
  5. use App\Event\Profile\ProfileEvent;
  6. use App\Event\Profile\ProfileWasDeleted;
  7. use App\Event\Profile\ProfileWasHidden;
  8. use App\Event\Profile\ProfileWasPlacedOnAdBoard;
  9. use App\Event\Profile\ProfileWasRemovedFromAdBoard;
  10. use App\Message\UpdateRotationMessage;
  11. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  12. use Symfony\Component\Messenger\MessageBusInterface;
  13. readonly class RotationServiceSubscriber implements EventSubscriberInterface
  14. {
  15.     public function __construct(private MessageBusInterface $bus)
  16.     {
  17.     }
  18.     // Вызывать при любом изменении анкеты, изменении тарифа размещения или добавлении в листинг
  19.     public function onChange(ProfileEvent $event): void
  20.     {
  21.         $caused get_class($event);
  22.         $this->bus->dispatch(UpdateRotationMessage::place($caused$event->getProfile()->getId()));
  23.     }
  24.     // Вызывать при удалении анкеты из листинга
  25.     public function onDelete(ProfileEvent $event): void
  26.     {
  27.         $caused get_class($event);
  28.         $this->bus->dispatch(UpdateRotationMessage::delete($caused$event->getProfile()->getId()));
  29.     }
  30.     public static function getSubscribedEvents(): iterable
  31.     {
  32.         return [
  33.             ProfileWasRemovedFromAdBoard::NAME => ['onDelete', -110],
  34.             ProfileWasHidden::NAME => ['onDelete', -110],
  35.             ProfileWasDeleted::NAME => ['onDelete', -110],
  36.             ProfileModerationRejected::NAME => ['onDelete', -110],
  37.             ProfileDataChanged::NAME => ['onChange', -100],
  38.             ProfileWasPlacedOnAdBoard::NAME => ['onChange', -100],
  39.         ];
  40.     }
  41. }