src/EventSubscriber/Messaging/MessageResourceSubscriber.php line 34
<?phpnamespace App\EventSubscriber\Messaging;use Symfony\Component\HttpFoundation\RequestStack;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Symfony\Component\EventDispatcher\GenericEvent;use Webmozart\Assert\Assert;use Sylius\Component\Customer\Model\CustomerInterface;use App\Repository\Customer\CustomerRepository;use App\Entity\Channel\ChannelEcodaAccountInfo;use App\Entity\Messaging\AdminMessage;use App\Repository\Channel\ChannelEcodaAccountInfoRepository;use App\Repository\Channel\ChannelEcodaAccountTypeRepository;use Doctrine\ORM\EntityManagerInterface;use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;use App\Entity\Messaging\Message;class MessageResourceSubscriber implements EventSubscriberInterface{private $request;private $storage;private $em;public function __construct(RequestStack $request, EntityManagerInterface $em, TokenStorageInterface $storage){$this->request = $request->getCurrentRequest();$this->storage = $storage;$this->em = $em;}public function onPreCreate(GenericEvent $event){$entity = $event->getSubject();Assert::isInstanceOf($entity, Message::class);$thread = $this->em->getRepository('App:Messaging\Thread')->find($this->request->query->get('thread'));$replyTo = $this->em->getRepository('App:Messaging\Message')->find($this->request->query->get('reply_to'));$entity->setThread($thread);$entity->setReplyTo($replyTo);$entity->setType('admin');$message = new AdminMessage();$message->setAdmin($this->storage->getToken()->getUser());$message->setCustomer($thread->getOwner()->getCustomer());$entity->setAdminMessage($message);}public function onPreUpdate(GenericEvent $event){$entity = $event->getSubject();Assert::isInstanceOf($entity, Message::class);$entity->getThread()->setUpdatedAt(new \Datetime('now'));}public static function getSubscribedEvents(){return ['app.message.pre_create' => 'onPreCreate','app.message.pre_update' => 'onPreUpdate',];}}