<?php
namespace App\EventSubscriber;
use App\Entity\User;
use App\Entity\JobQueue;
use App\Service\EsJobQueue;
use Doctrine\ORM\EntityManagerInterface;
use App\Event\DocFileVersionPostPersistEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use App\Service\JobQueueAction\DocFileVersionNotificationEmailAction;
class DocFileVersionSubscriber implements EventSubscriberInterface
{
public function __construct(
private EsJobQueue $esJobQueue,
private EntityManagerInterface $_em,
) {
}
public static function getSubscribedEvents(): array
{
return [
DocFileVersionPostPersistEvent::NAME => 'onCreate'
];
}
public function onCreate(DocFileVersionPostPersistEvent $event)
{
$object = $event->getObject();
$userIds = $this->_em->getRepository(User::class)
->getForDocFileVersionNotification($object);
$payload = [
'userIds' => $userIds,
'docFileVersionId' => $object->getId()
];
$this->esJobQueue->create(
DocFileVersionNotificationEmailAction::NAME,
json_encode($payload),
JobQueue::PRIORITY_MEDIUM
);
}
}