<?php
namespace App\Event;
use App\Entity\Customer;
use App\Service\Messenger;
use EasyCorp\Bundle\EasyAdminBundle\Event\EasyAdminEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\EventDispatcher\GenericEvent;
use Bundles\Instruments\Base\Entity\Forward;
class EasyAdminSubscriber implements EventSubscriberInterface {
protected $messenger;
public function __construct(Messenger $messenger) {
$this->messenger = $messenger;
}
/**
* @return string[]
*/
public static function getSubscribedEvents() {
return [
EasyAdminEvents::POST_NEW => 'onPostNew',
EasyAdminEvents::POST_UPDATE => 'onPostUpdate',
EasyAdminEvents::PRE_NEW => 'onPreNew',
EasyAdminEvents::POST_DELETE => 'onPostDelete',
];
}
public function onPreNew(GenericEvent $event) {
$entity = $event->getSubject();
}
public function onPostNew(GenericEvent $event) {
$entity = $event->getSubject();
}
public function onPostDelete(GenericEvent $event) {
$entity = $event->getSubject();
if ($entity instanceof Forward) {
/**
* @var Forward $entity
*/
$this->messenger->send('forward_rejected', $entity->getPortfolio()->getCustomer(), $entity);
}
/**
* @var Customer $entity
*/
if ($entity instanceof Customer) {
$this->messenger->send('customer_rejected', $entity);
}
}
public function onPostUpdate(GenericEvent $event) {
$entity = $event->getSubject();
if ($entity instanceof Forward) {
/**
* @var Forward $entity
*/
$this->messenger->send('forward_updated', $entity->getPortfolio()->getCustomer(), $entity);
}
if ($entity instanceof Customer) {
/**
* @var Customer $entity
*/
$this->messenger->send('customer_updated', $entity);
}
}
}