<?php
namespace App\V4\EventSubscriber\Tag;
use App\V4\Enum\EntityChangedEventTypeEnum;
use App\V4\Event\PostPersistEvent;
use App\V4\Event\PostRemoveEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class EntityChangedSubscriber extends AbstractEntityChangedSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents(): array
{
return [
PostPersistEvent::NAME => 'onPostPersist',
PostRemoveEvent::NAME => 'onPostRemove',
];
}
public function onPostPersist(PostPersistEvent $event): void
{
$entity = $event->getAfter();
$eventType = null === $event->getBefore()
? EntityChangedEventTypeEnum::EVENT_TYPE_CREATED
: EntityChangedEventTypeEnum::EVENT_TYPE_UPDATED;
$this->dispatchNotification($entity, $eventType);
}
public function onPostRemove(PostRemoveEvent $event): void
{
$entity = $event->getAfter();
$this->dispatchNotification($entity, EntityChangedEventTypeEnum::EVENT_TYPE_DELETED);
}
}